GNU/Linux >> Linux の 問題 >  >> Linux

「レート制限が原因で、imuxsock が pid # から # メッセージを失いました」 – Linux での rsyslog レート制限

rsyslog によるレート制限により、/var/log/messages には多くのドロップされたメッセージ エントリが表示されます:

...
Nov 7 14:23:14 thx1138 rsyslogd-2177: imuxsock lost 516 messages from pid 159386 due to rate-limiting
Nov 7 14:23:15 thx1138 rsyslogd-2177: imuxsock begins to drop messages from pid 159386 due to rate-limiting
Nov 7 14:23:20 thx1138 rsyslogd-2177: imuxsock lost 512 messages from pid 159386 due to rate-limiting
Nov 7 14:23:21 thx1138 rsyslogd-2177: imuxsock begins to drop messages from pid 159386 due to rate-limiting
Nov 7 14:29:50 thx1138 rsyslogd-2177: imuxsock begins to drop messages from pid 238300 due to rate-limiting
...

これは予期される動作です。 rsyslogd は正常に動作しています。ドロップされたメッセージに関するエントリは、通常のエントリです。デフォルトでは、rsyslogd は 1 つのプロセスから 5 秒間に 200 個のメッセージを受け入れます。そのしきい値を超えると、メッセージはドロップされます。したがって、以下の例のエントリの場合、プロセス 77845 は 5 秒間に約 436 のメッセージを送信しました。レート制限により、rsyslogd はそのうち 236 個を削除しました。

...
Nov 6 15:46:48 thx1138 rsyslogd-2177: imuxsock begins to drop messages from pid 77845 due to rate-limiting
Nov 6 15:46:52 thx1138 rsyslogd-2177: imuxsock lost 236 messages from pid 77845 due to rate-limiting PID 77845
...

以下に示す値で次のパラメーターを設定すると、レート制限が無効になり、メッセージは破棄されません。

# vi /etc/rsyslog.conf
$SystemLogRateLimitInterval 0
$SystemLogRateLimitBurst 0
$IMUXSockRateLimitBurst 0
$IMUXSockRateLimitInterval 0
$IMUXSockRateLimitSeverity 7
...

rsyslog によって処理されるすべてのエントリがメッセージ ファイルに入力されると予想される場合があります。これはそうではありません。 rsyslog.conf ファイルには RULES というセクションがあります rsyslog がメッセージを書き込む場所を管理します。デフォルトでは、カーネル メッセージ、情報メッセージ、および緊急メッセージのみがメッセージ ファイルに書き込まれます。他のメッセージは他のファイルに書き込まれます。たとえば、ユーザー認証に関するメッセージは /var/log/secure に移動します メールを扱うメッセージは /var/log/maillog に移動します .

rsyslog はタイプに基づいて異なるファイルにメッセージを書き込むため、レート制限をオフにすると、メッセージ ファイルだけでなく、指定されたログ ファイルにすべてのメッセージが書き込まれます。以下を実行すると、実際にこれを確認できます。

1. /etc/rsyslogd.conf のバックアップを作成します ファイル。

# cp -p /etc/rsyslog.conf /etc/rsyslog.conf_orig

2. OS のバージョンに応じて、以下の投稿で詳しく説明されているように、レート制限を無効にします。

CentOS/RHEL 6 でシステム ログのレート制限を無効化または拡張する方法
CentOS/RHEL 7 でシステム ログのレート制限を無効化または拡張する方法

3. /var/log 内のログ ファイルのサイズをメモします。

# ls -la /var/log

4. rsyslog を再起動します。

# service rsyslog restart       ### CentOS/RHEL 6
# systemctl restart rsyslog       ### CentOS/RHEL 7

5. 約 1 時間待ちます。

6. ステップ 2 で行った変更を元に戻します。

7. rsyslog を再起動します。

# service rsyslog restart       ### CentOS/RHEL 6
# systemctl restart rsyslog       ### CentOS/RHEL 7

8. /var/log 内のログ ファイルのサイズに注意してください。

この結果は次のようになります:

  • /var/log 内のメッセージ ファイル以外の 1 つまたは複数のログ ファイルのサイズが大幅に増大しました。
  • レート制限が無効になっている間、1 つまたは複数のログ ファイルのエントリの頻度が増加しました。
  • メッセージ ファイルにエントリがあったとしてもごくわずかです。この例に見られるように、レート制限が無効になり、rsyslog が 14:30 に再開されるまで、メッセージはドロップされていました。 14:30 と 15:33 の間には、14:44 に rngd のエントリが 1 つだけあります。レート制限を有効にすると、ドロップされたメッセージが再び始まります。
Nov 7 14:23:21 thx1138 rsyslogd-2177: imuxsock begins to drop messages from pid 159386 due to rate-limiting
Nov 7 14:29:50 thx1138 rsyslogd-2177: imuxsock begins to drop messages from pid 238300 due to rate-limiting
Nov 7 14:30:02 thx1138 kernel: Kernel logging (proc) stopped.
Nov 7 14:30:02 thx1138 rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="13439" x-info="http://www.rsyslog.com"] exiting on signal 15.
Nov 7 14:30:02 thx1138 kernel: imklog 5.8.10, log source = /proc/kmsg started.
Nov 7 14:30:02 thx1138 rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="242406" x-info="http://www.rsyslog.com"] start
Nov 7 14:44:15 thx1138 rngd[13453]: read error
Nov 7 15:32:58 thx1138 kernel: Kernel logging (proc) stopped.
Nov 7 15:32:58 thx1138 rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="242406" x-info="http://www.rsyslog.com"] exiting on signal 15.
Nov 7 15:32:59 thx1138 kernel: imklog 5.8.10, log source = /proc/kmsg started.
Nov 7 15:32:59 thx1138 rsyslogd: [origin software="rsyslogd" swVersion="5.8.10" x-pid="175797" x-info="http://www.rsyslog.com"] start
Nov 7 15:34:25 thx1138 rsyslogd-2177: imuxsock begins to drop messages from pid 179680 due to rate-limiting
Nov 7 15:35:56 thx1138 rsyslogd-2177: imuxsock lost 193 messages from pid 179680 due to rate-limiting

したがって、上記から、レート制限の無効化が実際に機能していることがわかりますが、期待どおりには機能していません。レート制限に関しては、次の点を考慮する必要があります:

1. ランダムで頻度の低いメッセージのバーストは、必ずしも問題を示しているわけではありません。ただし、ドロップされたメッセージの継続的な継続的な繰り返しは調査される場合があります。ドロップされたメッセージが頻繁に発生し、多数のメッセージがドロップされている場合は、これらのメッセージ (情報または実際のエラーの警告) を調査する必要があります。上記のテストを使用して、メッセージの送信先を確認し、/var/log のログを確認して、問題が実際に存在するかどうかを判断するか、メモすることができます。

2. rsyslogd.conf のレート制限設定を変更したり、レート制限を完全に無効にしたりする場合は注意してください。ドロップされるメッセージが少ないということは、それらをログに記録するために必要な処理が増えることを意味します。メッセージが多すぎると、パフォーマンスの問題が発生する可能性があり、極端な状況ではエビクションさえ発生する可能性があります。


Linux
  1. Linux にソースから Apache 2 をインストールする

  2. Linux のコマンド xfs_repair からの一般的なエラー メッセージ

  3. rsyslog アクションについて

  1. Linux での mesg コマンドの例

  2. Linux の最大 PID

  3. Linux PID のリサイクル

  1. Linux – Linuxへのログインを理解していますか?

  2. CからLinuxでPIDによってプロセスのCPU使用率を計算する方法は?

  3. Linux init.d/rc.d スクリプトからエラー メッセージを見つける方法は?