Omitir certas entradas do log de acesso do Apache

2

Existe uma maneira simples de manter as entradas de ruído fora do arquivo access_log sem fazer o registro do piped para um script que faz um grep -v nos critérios de correspondência ou algo do tipo?

Eu tenho collectd monitorando as estatísticas do apache, mas como consequência recebo estas mensagens:

157.98.65.xxx - - [23/Apr/2014:09:46:32 -0400] "GET /server-status/?auto HTTP/1.1" 200 439 "-" "collectd/4.10.9"
157.98.65.xxx - - [23/Apr/2014:09:46:32 -0400] "GET /server-status/?auto HTTP/1.1" 200 439 "-" "collectd/4.10.9"

Quando eles executam analytics em relação aos logs do apache, eles agora obtêm uma entrada para isso que não está realmente relacionada ao motivo pelo qual eles querem executar a análise (eles não se importam com a atividade devido ao monitoramento do sysadmin).

    
por Bratchley 23.04.2014 / 16:13

1 resposta

3

Você pode usar uma combinação de SetEnvIf e env= na definição de log.

O manual do Apache cobre-o em "log condicional", citando aqui.

Conditional Logs

There are times when it is convenient to exclude certain entries from the access logs based on characteristics of the client request. This is easily accomplished with the help of environment variables. First, an environment variable must be set to indicate that the request meets certain conditions. This is usually accomplished with SetEnvIf. Then the env= clause of the CustomLog directive is used to include or exclude requests where the environment variable is set. Some examples:

# Mark requests from the loop-back interface 
  SetEnvIf Remote_Addr "127\.0\.0\.1" dontlog
# Mark requests for the robots.txt file 
  SetEnvIf Request_URI "^/robots\.txt$" dontlog
# Log what remains 
  CustomLog logs/access_log common env=!dontlog

É abordado em esta seção do manual.

Você estaria procurando algo como (não testado)

SetEnvIf Remote_Addr "157\.98\.65\.xxx" dontlog

ou

SetEnvIf User-Agent "collectd/4\.10\.9" dontlog

    
por 23.04.2014 / 16:45