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

如果有一種方法可以在不重定向到不同文件的情況下執行此操作,我仍然想知道。

相關內容