Rsyslogはsyslogから$ programnameを除外します。

Rsyslogはsyslogから$ programnameを除外します。

リモートrsyslogサーバーから重複したメッセージを受信しました。メールサーバーでclamavログキャプチャを設定しても、syslogにログが表示されます。

# Configuration for Mail ClamAV logs in rsyslog.d
if ($fromhost contains "mail") and ($programname contains "clam") then {
   action(type="omfile" file="/var/log/mail-clam.log")
}

メールclam.log:

Jan  3 11:32:07 mail2 freshclam[265]: Received signal: wake up
Jan  3 11:32:07 mail2 freshclam[265]: ClamAV update process started at Thu Jan  3 11:32:07 2019
Jan  3 11:32:07 mail2 freshclam[265]: main.cld is up to date (version: 58, sigs: 4566249, f-level: 60, builder: sigmgr)
Jan  3 11:32:07 mail2 freshclam[265]: daily.cld is up to date (version: 25264, sigs: 2197013, f-level: 63, builder: raynman)
Jan  3 11:32:07 mail2 freshclam[265]: bytecode.cld is up to date (version: 328, sigs: 94, f-level: 63, builder: neo)

システムログ:

Jan  3 11:32:07 mail2 freshclam[265]: Received signal: wake up
Jan  3 11:32:07 mail2 freshclam[265]: ClamAV update process started at Thu Jan  3 11:32:07 2019
Jan  3 11:32:07 mail2 freshclam[265]: main.cld is up to date (version: 58, sigs: 4566249, f-level: 60, builder: sigmgr)
Jan  3 11:32:07 mail2 freshclam[265]: daily.cld is up to date (version: 25264, sigs: 2197013, f-level: 63, builder: raynman)
Jan  3 11:32:07 mail2 freshclam[265]: bytecode.cld is up to date (version: 328, sigs: 94, f-level: 63, builder: neo)

ログを除外するには、rsyslog.confに次の行があります。

*.*;auth,authpriv,mail.none     -/var/log/syslog

$programnameシステムログから除外する方法がわかりません。この問題を解決する正しい方法は何ですか?

*.*;auth,authpriv,mail.none,if ($programname contains "clam") then {}     -/var/log/syslog

それともif文を何とか参照できますか?

ベストアンサー1

構成ファイルの規則はrsyslog上から下に評価されます。したがって、必要な処理後にログメッセージを削除するだけで、オプションのロギングを達成できます。 「停止」操作はログメッセージを削除するために使用されます。

状況に応じて、rsyslog.confファイルを次のように変更します。

if ($fromhost contains "mail") and ($programname contains "clam") then {
   action(type="omfile" file="/var/log/mail-clam.log")
   stop
}

...

*.*;auth,authpriv,mail.none     -/var/log/syslog

この構成では、式に一致するすべてのメッセージが/var/log/mail-clam.logに書き込まれた後に削除されます。これにより、メッセージがさらに処理され、/var/log/syslogに書き込まれるのを防ぎます。

おすすめ記事