Quero enviar meu log do Apache em um formato personalizado (GELF) para um servidor de recebimento UDP (executando o Graylog2). Eu tinha certeza que tudo estava funcionando bem, mas depois de um tempo, eu recebi um alerta, meu servidor não estava respondendo. Eu vejo no log de erros do Apache um monte de:
piped log program 'nc -w 1 -u logserver 12201' failed unexpectedly
Curiosamente, em um servidor com tráfego mínimo, vejo esse erro constantemente nos registros, mesmo quando não há tráfego para o site. E quando há tráfego, o log é enviado pelo netcat para o graylog - então ele funciona de qualquer maneira.
Se eu parar o Apache e reiniciá-lo, o erro continuará aparecendo no log de erros após a reinicialização. Depois de pará-lo, certifiquei-me de que não houvesse processos de fuga.
A configuração é:
LogFormat "{ \"version\": \"1.1\", \"host\": \"%V\", \"short_message\": \"%r\", \"full_message\": \"%r, status: %>s, %O bytes, User Agent: %{User-Agent}i\", \"timestamp\": %{%s}t, \"level\": 6, \"_user_agent\": \"%{User-Agent}i\", \"_source_ip\": \"%a\", \"_duration_usec\": %D, \"_duration_sec\": %T, \"_request_size_byte\": %O, \"_http_status\": %s, \"_http_request_path\": \"%U\", \"_http_request\": \"%U%q\", \"_http_method\": \"%m\", \"_http_referer\": \"%{Referer}i\" }" graylog2_access
E o CustomLog:
CustomLog "|nc -w 1 -u logserver 12201" graylog2_access
Não sei como obter mais informações de depuração sobre o que falhou.
- Alguém pode me ajudar a obter informações mais detalhadas sobre a falha?
- Se alguém souber por que isso falha, essa também seria uma ótima resposta!
- Outra maneira de enviar os logs constantemente (em tempo real) também é uma solução aceitável. No entanto, eu sei sobre logstash, mas neste caso, eu não preciso de análise, eu já posso saída no formato GELF. Eu tentei logstash no passado também e sempre foi, eventualmente, ficar sem memória e parar por conta própria.