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.flaskfluentd

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

別のファイルにリダイレクトせずにこれを行う方法がある場合は、それでも知りたいです。

関連情報