我正在清理和标准化我们的日志处理,添加 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")
如果有办法做到这一点而不重定向到其他文件,我仍然想知道。