LoginSignup
1
0

メールログが無い! 〜 journald の抑制設定について

Last updated at Posted at 2023-09-28

maillog にあるはずのログが無い?!

ほかのメンバーから「メール送信の状況を調査してほしい」との依頼があったので、対象メールサーバー(Postfix)の /var/log/maillog を調べていたところ、その時刻にあるはずのメールログが無いという現象に出くわしました。

手がかりは messages に

あれこれ調べていたら、該当時刻付近の /var/log/messages に以下のようなログが記録されていることに気が付きました。

/var/log/messages
Aug 12 10:02:44 our-smtp-server journal: Suppressed 1140 messages from /system.slice/postfix.service
Aug 12 10:03:22 our-smtp-server journal: Suppressed 1202 messages from /system.slice/postfix.service

うむむ、 postfix.service からの 1140 件のメッセージが Suppress されている? 「suppressed」を辞書で引くと、「抑制された」の意味。どうやら、何かの理由で Postfix のログ出力が抑制されているようです。

journald による抑制

journald は systemd 環境下の標準的なログ管理サービスです。ログ出力が多すぎるときには、ディスクの空き容量が逼迫しないよう、ログの出力を制限できるようになっています。
メールログが消えた時間帯は、ちょうど別プログラムで大量のメールを送信していた時間帯でした。

journald ではデフォルトで以下の設定がなされています。

/etc/systemd/journald.conf
RateLimitInterval=30s
RateLimitBurst=1000

ここで、 RateLimitInterval はログを制限するための基準の時間、 RateLimitBurst はその基準時間に出力できるログの件数です。
つまり、30秒間に 1,000件以上のログ出力は抑制されるということです。

ログ出力無制限に変更

journald.conf の RateLimitInterval を 0 にすることで、制限なくログを出力するようになります。

/etc/systemd/journald.conf
RateLimitInterval=0
RateLimitBurst=1000

また、 rsyslog の出力についても制限をはずします。

journald からの入力を受け付けている以下の箇所に、

/etc/rsyslog.conf
$ModLoad imjournal

制限を外すよう、 $imjournalRatelimitInterval の設定行を追加します。

/etc/rsyslog.conf
$ModLoad imjournal
$imjournalRatelimitInterval 0

このあと journald と rsyslog を再起動して、設定を反映させます。

sudo systemctl restart systemd-journald
sudo systemctl status systemd-journald
sudo systemctl restart rsyslog.service
sudo systemctl status rsyslog.service

これにより Postfix のログが抑制されずに出力されるようになりました。

Postfix に限らず、システムのログの一部が見当たらない場合は、 該当時刻の messages ログを一度確認してみましょう。 journald によって制限されているかもしれませんよ。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0