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")

如果有办法做到这一点而不重定向到其他文件,我仍然想知道。

相关内容