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コマンドも確認しました。非常にありがとう