CentOS7で/var/log/maillogを作るrsyslogのインストールと設定

KagoyaのVPSの最小構成で作成したCentOS7がmaillogを作ってくれず、しばらく放置していたけど、rsyslogをインストール/設定したときの覚書。

環境: CentOS 7.6, rsyslog 8.24.0

rsyslogのインストール
# yum install rsyslog

設定の確認
# less /etc/rsyslog.conf
# less /etc/rsyslog.d/listen.conf

初期設定でjournalを監視してくれている。

サービス起動と自動起動設定。
# systemctl start rsyslog
# systemctl enable rsyslog

前に設定したjournaldの設定変更。
# less /etc/systemd/journald.conf

#Storage=persistent

サービス再起動
# systemctl restart systemd-journald

rsyslogの稼働状況を確認
# systemctl status rsyslog
rsyslogd[12874]: imjournal: begin to drop messages due to rate-limiting
rsyslogd[12874]: imjournal: 198872 messages lost due to rate-limiting

メッセージが捨てられているようなログ。
Ratelimit.Interval(デフォルトで600秒)の間にRatelimit.Burst(デフォルトで20000)のメッセージ数を超えていると出力されるらしい(参考:imjournal: Systemd Journal Input Module | rsyslog 80488ad docs)。
この設定を変更する。
# less /etc/rsyslog.conf
# @see https://www.rsyslog.com/doc/v8-stable/configuration/modules/imjournal.html
$imjournalRatelimitInterval 60
$imjournalRatelimitBurst 200000
「$ModLoad imjournal」のあとに記述する。
$imjournalRatelimitIntervalをOffにするのはお勧めしないと公式ドキュメントに書いてあるので60秒にしてみた。

サービス再起動して確認
# systemctl restart rsyslog

メール送信してみて確認。
# mail hoge@gmail.com
# systemctl status rsyslog
# less /var/log/maillog

無事出力を確認。

ログローテーションの確認
# less /etc/logrotate.d/syslog


【関連記事】