我正在清理和標準化我們的日誌處理,添加 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")
如果有一種方法可以在不重定向到不同文件的情況下執行此操作,我仍然想知道。