Я очищаю и стандартизирую нашу обработку логов, добавляю fluentd и ELK. Эта часть работает нормально, поскольку nginx ведет лог в свой собственный файл:
input(type="imfile" tag="app.nginx" file="/var/log/nginx/access.log" ruleset="fluentd")
Однако другие компоненты приложения, например, процесс python, регистрируются в /var/log/syslog
с сообщениями журнала, которые начинаются с [flask]
. Я хотел бы отфильтровать /var/log/syslog
сообщения, содержащие [flask]
, пометить их тегом app.flask
и применить fluentd
набор правил.
Я мог бы настроить каждую службу на ведение журнала в отдельный файл, как в nginx, но мне бы хотелось по возможности избежать изменения конфигурации systemd.
решение1
В итоге я решил эту проблему, перенаправив сообщения в определенный файл журнала, а затем добавив input
указанный на него файл.
if $rawmsg contains "[flask]" then /var/log/flask.log
input(type="imfile" tag="app.flask" file="/var/log/flask.log" ruleset="fluentd")
Если есть способ сделать это без перенаправления на другой файл, я все равно хотел бы знать.