rsyslog - как пометить и применить набор правил по содержимому строки?

rsyslog - как пометить и применить набор правил по содержимому строки?

Я очищаю и стандартизирую нашу обработку логов, добавляю 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")

Если есть способ сделать это без перенаправления на другой файл, я все равно хотел бы знать.

Связанный контент