Rsyslogサーバーがsmartdメッセージを除くすべてのメッセージをログに記録する方法はありますか? 「現在読み取れない(保留中の)セクター」だけをログに記録したくない。
はいあります。これらのメッセージをログに記録するルールは、次のようなフィルター内にある必要があります:( smartdメッセージが/var/log/smartd.logにログに記録されているとします)
if ($programname == "smartd") then {
if not ($msg contains "Currently unreadable (pending) sectors") then {
*.* /var/log/smartd.log
}
stop
}
上記のコードは、smartdサービスからのすべてのメッセージに一致します。メッセージにその文字列が含まれていない場合、すべてのメッセージが/var/log/smartd.logに記録されますが、その文字列が含まれている場合、ログに記録されません。この時点を過ぎたすべてのログは、停止ルールによって削除されます。
このコードは、01-smartd.confのように、.confで終わる/etc/rsyslog.d/内のファイルに入れることができます。 rsyslog.confは、.confで終わるこのディレクトリ内のすべてのファイルをロードするため、00から49までのファイルがデフォルトの50-default.confよりも最初に読み取られます。
コードに停止ルールがある場合、最初に読み取った場合、メッセージは50-default.confのルールに到達しないため、重複するメッセージは存在しないことに注意してください。