web-dev-qa-db-ja.com

Rsyslogの `logger`メッセージが重複しています

Rsyslogのimjournalモジュールに問題があった可能性があります ここで説明されている問題 で、systemdのジャーナルの原因による複雑化が原因

タイトなループで無限に同じデータを返すジャーナル。これにより、rsyslog内で大量のメッセージが重複し、システムリソースが使い果たされると、おそらくサービス拒否が発生します。

いずれにせよ、数ヶ月前のメッセージの繰り返しをプロセッサが実際に最大化しました。 rsyslogとjournaldがデフォルトで非常に緊密に結合されていることを理解していなかったので、前者を再構成して、より伝統的でより効率的なライブソケットを入力に使用します これらの指示

$ModLoad imuxsock
$OmitLocalLogging off

ソケットが作成されて使用されている限り、これは機能するようです。しかし、それをテストしたところ、奇妙なことに気づきました。

> logger "hello world"

/var/log/syslogで1回だけ言及されていると記載されている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がアプリケーションから一度メッセージを取得し、その後、journaldから再度メッセージを取得していると考えています。

これはちょっとばかげています。どうすれば停止できますか?

8
goldilocks

私は、rsyslogがアプリケーションから一度メッセージを取得し、その後、journaldから再度メッセージを取得していると考えています。

うん。解決策は、これを/etc/systemd/journald.confに含めることです。

ForwardToSyslog=no

imjournalを使用するときにこの問題がなかった理由はよくわかりませんが、man journald.confにヒントがあります:

ForwardToSyslog =

[...]ジャーナルデーモンは従来のsyslogデーモンに転送されます[...] syslogへの転送が有効になっているが、syslogデーモンが実行されていない場合、それぞれのオプションは効果がありません

「実行中のsyslogデーモン」が実際に意味するのは、従来のsyslogソケットの文字通りの存在だと思います。

7
goldilocks

私もこの提案を試しましたが、それが私のシステムに影響を与えないことがわかりました。むしろ私はこのコメントが役に立ったと感じました: syslog duplicate all content

この行をコメント化。= info;。= notice;。= warn;アウト、つまり、#。= info;。= notice;。= warn; 。 rsyslogを再起動します。

/etc/rsyslog.confからのルールが現象の原因になるため。

「Hello World」ログメッセージのヒントで実際にこれを証明できます

私のシステムでは、これらの構成は/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サービスを再起動しました。これは実際に現象を止めました。

2

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

$OmitLocalLogging off

私はそれを

$OmitLocalLogging on

Rsyslogサービスを再起動しました。複製は停止しました。私もあなたが提案したようにロガーコマンドでチェックしました。どうもありがとう

1
Shekhar Basnet