skip to Main Content

I have a Django application running on aws-elastic-beanstalk. I try to disable the logs caused by my health-checks. The health-checks are already routed to a seperate page.

Elastic-beanstalk uses Apache + mod_wsgi.

The following code is a solution that works with nginx servers. I try to create something similar for apache.

I found out that conditional Logs are probably the appropriate way to do it with an Apache Server.

My directory struture looks like the following

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

my attempt:

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

The file is created but it has no effect. Neither do I see error logs nor a change in the access logs.

In the httpd.conf there is already the following setting:

 CustomLog "logs/access_log" combined

Do I need to override it?

2

Answers


  1. Chosen as BEST ANSWER

    So I had another go on this.

    The problem really is the setting in the httpd.conf. If I outcomment the line:

    #CustomLog "logs/access_log" combined
    

    manually via ssh my settings are used and the health-checks disappear from the logs.

    Note that this is not really a permanent solution as beanstalk might spin up a new instance and override the httpd.conf again.


  2. In your /etc/httpd/conf/httpd.conf

    SetEnvIf Request_URI "^/health/$" dontlog=1
    CustomLog logs/access_log combined env=!dontlog
    LogFormat "%h (%{X-Forwarded-For}i) %l %u %t "%r" %>s %b "%{Referer}i" "%{User-Agent}i"" combined
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search