はじめに
業務にて、rsyslogの一部ログが欠落していることがわかった。
/var/log/messagesにて「⚪️⚪️ messages lost due to rate-limiting」のメッセージが表示されていた。(⚪️⚪️の部分が何件かを表す)
ログが全て表示されるよう設定変更したので対応内容を記載します。
rsyslogの設定変更
rsyslogとは、Linuxシステムでのログの生成、収集、処理、および転送を管理するためのシステムです。
rsyslogの設定ファイルは通常 /etc/rsyslog.conf または /etc/rsyslog.d/*.conf にあります。
下記の設定を見直すことにしました。
$MaxMessageSize
syslogが処理できるメッセージの最大サイズを設定するための変数です。
これにより、ログメッセージのサイズが一定以上の場合、そのメッセージが切り捨てられます。
既存の設定
$MaxMessageSize 8k
この場合、メッセージの最大サイズが8キロバイト(8k)に制限されています。
もし8キロバイトを超えるメッセージが到着した場合、rsyslogはそのメッセージを切り捨てます。
Ratelimit.Interval:
ログメッセージの制限が適用される時間の間隔を設定します。
例えば、この値を60に設定すると、60秒間に指定された数のログメッセージしか受け入れません。
Ratelimit.Burst:
Ratelimit.Interval 内で許容されるログメッセージの最大数を設定します。
これは、一度に受け入れることができる最大メッセージ数を表します。
デフォルト設定は600秒あたり20000メッセージ。
rsyslogは、この指定された時間制限枠内で最大バースト後に届いたメッセージを破棄する。
設定を見直し下記のように変更します。
$MaxMessageSize 16k
Ratelimit.Interval="60"
Ratelimit.Burst="20000"
メッセージの最大サイズが16キロバイト。
60秒あたり20000メッセージまで許容される。
rsyslogの設定反映
設定変更を行ったので、反映します。
/etc/rsyslog.confの文法チェック
sudo rsyslogd -N1
rsyslogの再起動
sudo systemctl status rsyslog
sudo systemctl restart rsyslog
sudo systemctl status rsyslog
ログの確認
対象サーバで、/var/log/messagesにて、「⚪️⚪️ messages lost due to rate-limiting」が出なくなったのでOK。
ログの確認
sudo fgrep "rsyslog" /var/log/messages | tail
※全て出力するように変更した場合、ログのサイズが大きいとディスクの圧迫につながるので注意。
参考
https://qiita.com/11ohina017/items/087b1b7c4411c3b3195a
https://tech-lab.sios.jp/archives/36082