在 AWS ELB Django 应用程序中禁用健康检查日志记录

在 AWS ELB Django 应用程序中禁用健康检查日志记录

我在 aws-elastic-beanstalk 上运行了一个 Django 应用程序。我尝试禁用由我的健康检查引起的日志。健康检查已路由到单独的页面。

Elastic-beanstalk 使用 Apache + mod_wsgi。

这里有一个解决方案适用于 nginx 服务器。我尝试为 apache 创建类似的东西。

我发现条件日志可能是使用 Apache 服务器执行此操作的适当方法。

我的目录结构如下所示

/etc/httpd/
  - conf 
      - httpd.conf # main conf
  - conf.d 
      - wsgi.conf # virtual hosts
      - additional config files

我的尝试:

files:
  "/etc/httpd/conf.d/disable_health_logs.conf":
    mode: "000644"
    owner: root
    group: root
    content: |
        <IfModule mod_setenvif>
            SetEnvIf Request_URI "^/health/$" dontlog
            CustomLog logs/access_log combined env=!dontlog
        </IfModule>

附加配置disable_health_logs.conf已创建,但没有任何效果。我既没有看到错误日志,也没有看到访问日志的变化。

其中httpd.conf已经有以下设置:

 CustomLog "logs/access_log" combined

我需要覆盖它吗?

答案1

我假设您正在使用以下方法加载模块

LoadModule setenvif_module <your_apache_modules_path>/mod_setenvif.so

另外,需要更正您的 IfModule 如下所示(注意:末尾的 .c)

<IfModule mod_setenvif.c>
  SetEnvIf Request_URI "^/health/$" dontlog
  CustomLog logs/access_log combined env=!dontlog
</IfModule>

否则,您所拥有的看起来是正确的。

答案2

因此我又尝试了一次。

问题确实出在 中的设置httpd.conf。如果我取消注释该行:

#CustomLog "logs/access_log" combined

通过 ssh 手动使用我的设置并且健康检查从日志中消失。

请注意,这并不是一个永久的解决方案,因为 beanstalk 可能会启动一个新实例并再次覆盖 httpd.conf

相关内容