(ヽ´ω`) < 助けてほしいマン

わからないことを助けてほしいマンが書くブログ

(ヽ'ω`) < rsyslogでimuxsockなんとかってメッセージが出る

(ヽ'ω`) < rsyslogが吐き出すログに変なメッセージが…

rsyslogが出力するログに、以下のようなエントリが書き込まれることがある。

rsyslogd-2177: imuxsock begin to drop messages from pid 2305 due to rate-limiting
rsyslogd-2177: imuxsock lost 68 messages from pid 2305 due to rate-limiting

(ヽ'ω`) < なんなのこれ?

rsyslogでは短時間に大量のログが発生した場合、パフォーマンスやディスク容量の観点から、出力を制限するRate Limit Control機能がある。 デフォルトでは、以下のように設定されている

$SystemLogRateLimitInterval [number] - specifies the rate-limiting interval in seconds. Default value is 5 seconds. Set it to 0 to turn rate limiting off. $SystemLogRateLimitBurst [number] - specifies the rate-limiting burst in number of messages. Default is 200.

つまり5秒に200以上のメッセージが来た場合、溢れた分を破棄する。

(ヽ'ω`) < どうやって対応するの?

対応方法としては2つ、しきい値を上げるか、Rate Limit Controlの機能を無効にしてしまう。

しきい値を上げる

上記で挙げた$SystemLogRateLimitIntervalと$SystemLogRateLimitBurstの値を変更する。

$SystemLogRateLimitInterval 3
$SystemLogRateLimitbBurst 400

この設定でデフォルトの「5秒で200以上が来たら破棄」から「3秒で400以上が来たら破棄」へと制限を緩めることができる。

Rate Limit Control機能を無効にする

$SystemLogRateLimitIntervalを0に設定する。

$SystemLogRateLimitInterval 0

Rate Limit Control機能は、大量のログエントリ発生に伴う、I/Oリソースの消費とログの肥大化を防ぐことを目的としている。 無効にしても問題がないかどうかは、マシンのリソースやログの収集目的を考慮して判断すること。

(ヽ'ω`) < ネットワーク経由のログってどうなるの?

imuxsockの制限になるので、ネットワーク経由のrsyslogで受信しているものはこの対象とはならない模様。 あくまでローカルのログでimuxsockを使用しているものが対象。

(ヽ'ω`) < 参考URL

http://www.rsyslog.com/how-to-use-rate-limiting-in-rsyslog/ http://www.rsyslog.com/doc/imuxsock.html