Rsyslogの「ロガー」メッセージが重複しています。

Rsyslogの「ロガー」メッセージが重複しています。

rsyslogのimjournalモジュールで問題が発生しました。ここで説明した問題、システムログによる合併症

ログは、緊密なループから同じデータを返し続けます。これにより、rsyslog 内で多数のメッセージが重複し、システム リソースが枯渇した場合にサービス拒否が発生する可能性があります。

それにもかかわらず、プロセッサが数ヶ月前のメッセージを繰り返すのを防ぎます。 rsyslogとJournaldが基本的に非常に密接に結合していることを知らなかったので、入力に従来より効率的なライブソケットを使用するように電子を再構成しました。このガイドライン:

$ModLoad imuxsock
$OmitLocalLogging off

これはソケットの作成と使用に関する限り動作するようです。ところでテストをしてみると変な点を発見しました。

> logger "hello world"

結果/var/log/syslogはに記載されています。一度だけ存在するrsyslog.conf

Apr 17 10:35:45 pidora logger: hello world
Apr 17 10:35:45 pidora logger: hello world

メッセージは他のすべてのメッセージと同様に繰り返されます。そのうちのいくつかはまったく同じですが、一部は1つの点でのみ異なります。

Apr 17 10:42:26 pidora systemd[1]: Stopping System Time Synchronized.
Apr 17 10:42:26 pidora systemd: Stopping System Time Synchronized.

これは[1]pidです。私は何が起こっているのか、rsyslogはアプリケーションからメッセージを一度取得し、ログから再びインポートすると信じています。

これは少し愚かなことです。どうやって防ぐことができますか?

答え1

私は何が起こっているのか、rsyslogはアプリケーションからメッセージを一度取得し、ログから再びインポートすると信じています。

はい。解決策は次の項目に含めることです/etc/systemd/journald.conf

ForwardToSyslog=no

使用時にこの問題が発生しない理由はimjournalわかりませんが、ここにヒントがありますman journald.conf

システムログに転送=

[...]ロギングデーモンはレガシーsyslogデーモンに渡す必要があります。 [...] syslogへの転送が有効になっているが実行中のsyslogデーモンがない場合、そのオプションは効果がありません。

「syslogデーモンが実行中」ということが実際に意味するのは、文字通り伝統的なsyslogソケットが存在するということです。

答え2

私もこの提案を試しましたが、それが私のシステムに何の影響も与えないことがわかりました。代わりに、この意見が役に立ったと思います。 システムログはすべてをコピーします。

この行にコメントを付けてください。 .=info;.=notice;.=警告が出ます。 #を意味します。.=情報;.=通知;.=警告; rsyslog を再起動します。

/etc/rsyslog.confルールがこの現象の原因であるためです。

実際にプロンプ​​トでこれを証明できます。「こんにちは世界」ログメッセージ

私のシステムで次の設定を見つけました。/etc/rsyslog.conf

# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none                /var/log/messages

# Log services messages
daemon.=error                                           /var/log/kern.log
daemon.*;daemon.!=error                                 /var/log/messages

daemon自動化されたプロセスにアクティビティを登録するための施設ルールを追加しました。

今、私は次のテストメッセージを試しました。

$ logger hello my server01 world

そしてこのログメッセージを見つけました/var/log/messages

Mar 22 13:35:41 server01 user01: hello my server01 world

しかし、私が試したとき

$ logger -p daemon.info hello my server01 02

次のログメッセージが見つかりました。

Mar 22 13:38:15 server01 usre01: hello my server01 02
Mar 22 13:38:15 server01 user01: hello my server01 02

これにより、除外ルールを/etc/rsyslog.conf追加するためにルールが変更されました。daemon.none

*.info;mail.none;authpriv.none;cron.none;daemon.none     /var/log/messages

rsyslogサービスを再起動してください。実際にこの現象を防ぎます。

答え3

私の場合、rsyslog.confファイルに次の行がありました。

$OmitLocalLogging off

私はそれを

$OmitLocalLogging on

rsyslog サービスを再起動します。複製が停止しました。提案したように、loggerコマンドも確認しました。非常にありがとう

関連情報