Сбой записи в лог Apache

Я пытаюсь написать простую директиву регистрации Apache Piped и получаю ошибку. Я просто хочу получить 200 кодов ответов для централизации моих файлов журнала в ELK. Это пользовательский формат журнала, который я создал.

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

Вот лог по каналу

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

Я получаю следующую ошибку в журнале ошибок apache2.

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

Я не могу понять, что здесь происходит. Я читаю документы apache по ведению журнала по каналам и не могу найти ничего, что я мог бы делать неправильно.

Это работает на Apache2 2.4.7

Заранее спасибо за помощь.

НОТА

Заглядывая дальше, я обнаружил, что apache 2.2 и apache 2.4 изменили способ, которым это делается. Ранее оболочка создавалась автоматически, но в новой версии 2.4 вы должны вручную указать оболочку. В результате я изменил свой синтаксис на этот

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

Это изменение сделало следующее. По какой-то причине, когда я перезапускаю apache2, он выводит весь вывод этой команды на стандартный вывод, и я вижу все это из моего терминала. Но затем происходит сбой с тем же сообщением об ошибке. Как будто Apache не может запустить это постоянно, что заставляет меня задуматься, нужно ли мне делать что-то еще, чтобы это исправить.

1 ответ

Проблема в том, что ваш grep пытается отфильтровать журнал на диске, но когда вы используете CustomLog с конвейером, все новые сообщения журнала отправляются туда, а не в файл, поэтому файл не существует. То, что вы, вероятно, на самом деле хотите, это:

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

То, что это будет делать, это обратный grep для 200 (что у вас было изначально), затем он отобразит его в файл журнала. Для получения дополнительной информации см.: https://workshop.avatarnewyork.com/post/filtering-apache-piped-logs-to-centralize-logging-of-errors-and-warnings/

Другие вопросы по тегам