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から再度メッセージを取得していると考えています。
これはちょっとばかげています。どうすれば停止できますか?
私は、rsyslogがアプリケーションから一度メッセージを取得し、その後、journaldから再度メッセージを取得していると考えています。
うん。解決策は、これを/etc/systemd/journald.conf
に含めることです。
ForwardToSyslog=no
imjournal
を使用するときにこの問題がなかった理由はよくわかりませんが、man journald.conf
にヒントがあります:
ForwardToSyslog =
[...]ジャーナルデーモンは従来のsyslogデーモンに転送されます[...] syslogへの転送が有効になっているが、syslogデーモンが実行されていない場合、それぞれのオプションは効果がありません
「実行中のsyslogデーモン」が実際に意味するのは、従来のsyslogソケットの文字通りの存在だと思います。
私もこの提案を試しましたが、それが私のシステムに影響を与えないことがわかりました。むしろ私はこのコメントが役に立ったと感じました: 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
サービスを再起動しました。これは実際に現象を止めました。
私の場合、rsyslog.confファイルに次の行がありました
$OmitLocalLogging off
私はそれを
$OmitLocalLogging on
Rsyslogサービスを再起動しました。複製は停止しました。私もあなたが提案したようにロガーコマンドでチェックしました。どうもありがとう