Falha no log do pipeline do Apache

1

Eu estou tentando escrever uma diretiva simples de logging canalizada do apache e estou tendo uma falha. Eu só quero grep out 200 códigos de resposta para centralizar meus arquivos de log para ELK. Este é o formato de registro personalizado que eu criei.

LogFormat "%s %h %l %u %t \"%r\" %b" remove

Aqui está o log canalizado

CustomLog "|/bin/grep -v '^200' /var/log/apache2/pi-mirror.com/access.log" remove

Eu recebo o seguinte erro no log de erros do apache2.

AH00106: piped log program '/bin/grep -v '^200' /var/log/apache2/pi-mirror.com/access.log' failed unexpectedly

Eu não consigo descobrir o que está acontecendo aqui. Eu li através de documentos de apaches em log canalizado e não consigo encontrar nada que eu poderia estar fazendo incorretamente.

Isso está sendo executado no Apache2 2.4.7

Agradecemos antecipadamente pela assistência.

OBSERVAÇÃO

Examinando isso, descobri que o apache 2.2 e o apache 2.4 mudaram a maneira como isso é feito. Anteriormente, um shell era gerado automaticamente, mas na nova versão 2.4 você deve especificar manualmente um shell. Como resultado, mudei minha sintaxe para esta

CustomLog "|$/bin/grep -v '^200' /var/log/apache2/pi-mirror.com/access.log" remove

Essa alteração fez o seguinte. Por alguma razão, quando eu reinicio o apache2, ele mostra toda a saída desse comando para o stdout e eu vejo tudo do meu terminal. Mas então ele falha com a mesma mensagem de erro. É quase como se o apache não estivesse realmente começando isso repetidamente, o que me faz pensar se preciso fazer outra coisa para consertar isso.

    
por Christopher 31.12.2015 / 18:28

1 resposta

1

O problema é que o seu grep está tentando filtrar o disco de log, mas quando você usa o CustomLog com um pipe, todas as novas mensagens de log são enviadas para ele, em vez do arquivo, para que o arquivo não exista. O que você provavelmente quer realmente é:

CustomLog "|/bin/grep -v '^200' | cat >> /var/log/apache2/pi-mirror.com/access.log" remove

O que isso vai fazer é um grep reverso para 200 (o que você tinha originalmente), então ele irá ecoar no arquivo de log. Para mais informações, consulte: link

    
por 31.12.2015 / 19:48