タグでrsyslogメッセージをフィルタリングする方法


12

出力をカスタムファイルにリダイレクトしたいアプリケーションとスクリプトがいくつかあります。

私はそれらのアプリケーションを使用して起動します

command | logger -t TAG

これらのメッセージをタグに基づいてフィルタリングし、別のファイルにリダイレクトしたいと思います。これらのアプリケーションは主に長時間実行されるプロセスであり、適切なログローテーションが必要であるため、bashリダイレクトを使用したくありません。

/etc/rsyslog.d/60-myfilter.confにカスタムフィルターを追加しようとしました。

if $syslogtag == 'giomanager' then /var/log/giomanager.log

何が悪いのですか?タグに基づいてフィルタリングする適切な方法は何ですか、または同様の結果を得るためのより良いオプションはありますか?

回答:


21

そのような場合(またはsyslogtag)は使用していませんが、(:<blah>,<condition> ...特に:msg、contains、...)を使用しましたが、

:syslogtag, isequal, "giomanager:" /var/log/giomanager.log
& stop

& stop(あるいは、& ~このようなRHEL6上などrsyslogのV6と古い()で)一致したメッセージは、それ以外の場合は、さらに、他のルールによって解析されるログイン後に廃棄されるようにします。


更新:テスト済み

syslogtagにはが含まれて:おり、""ではなくで囲む必要があります''


お返事をありがとうございます。私はあなたが提案したものを試したところ、確かにメッセージは破棄されましたが、決して書き込まれません/var/log/giomanager.log
mistyrouge

@mistyrouge:私の更新を参照してください
user9517 2013年

2
ありがとうございました。ログをリダイレクトしました/var/log/giomanager.log 、それでも/ var / log / syslogに書き込まれます。これがなぜ起こっているのか、それを防ぐ方法はありますか?
mistyrouge 2013年

1
破棄アクション(〜インジケーター)は非推奨です:(より良い)代替の "stop"ステートメントに置き換えられました:kb.monitorware.com/kbeventdb-detail-id-7171.html
Ivan Rave

7

それで、ようやく問題の解決策を見つけました。

私の道を導いてくれた@lainに感謝します。

前述の解決策は、タグ名に「:」を含めることです。また、これは非常に重要です。ファイル名50-default.confはアルファベット順で前になければなりません。

再開するには、以下をに入れます30-giomanager.conf

:syslogtag, isequal, "giomanager:" /var/log/giomanager.log
& stop

このファイル/var/log/giomanager.logは「syslog」ユーザーが書き込み可能である必要があることに注意してください。


@mistyrougeに感謝します。あなたと同じ問題があります。正しいファイルにログインすると、ログが/ var / log / syslogにリダイレクトされます。これがなぜ起こっているのか、それを防ぐ方法はありますか?
Mayank Patel 2016

bind9ログをフィルタリングするためにこれを機能させることができませんでした。代わりに、「:programname、isequal、 "named" /var/log/named/named.log」が機能します。タグが「named [32193]」のようなものであると考えられます。
Rennex 2017

たとえば、タグにPIDが含まれている場合にstartswith代わりに使用できますisequal。またはregex、複雑なマッチの場合。
Tim Sylvester、
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.