ログローテーション時の新ファイルへの出力先更新について

実現したいこと

・ログローテーションが実行され、ログファイルの出力先が更新されなかった理由を知りたい。
・logrotateコマンドにてログローテーションがされる際に、どのタイミングでどのプロセスがファイルinodeを更新するのかを知りたい。
・HUPシグナルを発報する設定がないにもかかわらず、なぜログの出力先が更新されたのかを知りたい。

前提

・snmptrapを受信するサーバにおいて、snmptrap.logを日次でローテーションしている。
・snmptrap.logの出力先は/etc/rsyslog.confにて/var/log/snmptrap.logに出力するように設定している。
・ログローテーションは毎日00:00にcronにて「/usr/sbin/logrotate -f /etc/logrotate.d/snmptrap」で実行している。
・「/etc/logrotate.d/snmptrap」の内容は下記のとおり。
/var/log/snmptrap.log{
daily
rotate 15
notifempty
missingok
create 0664 root root
}

発生している問題・エラーメッセージ

ある日、ログが古いファイル(snmptrap.log.1)に書き込まれているという事象が発生した。
※事象自体はOS再起動にて解消し、その後は通常通りにログローテーションをしている。

試したこと

・検証環境にて、snmptrapを10件/秒を受信、10秒ごとに200世代ログローテーションする検証を行ったが、事象を再現できなかった。
・logrotate、rsyslog、snmptrapに関する設定ファイルを確認したが、HUPシグナルを発報するような設定は見当たらなかった。

補足情報(FW/ツールのバージョンなど)

自身で調査したところ、ログローテーションはログを出力しているプロセスにHUPシグナルを投げないとログの出力先(inode)が更新されず、
古いファイルにログが出力されるとの記載があった。しかし、上記に記載したとおり、ログローテーションの設定にHUPシグナルに関する記述はない。

============================================================

事象自体はOS再起動で解消したのですが、根本原因が不明な状況となっております。
知見をお持ちの方がいらっしゃれば、ご教授願いたく思います。

コメントを投稿

0 コメント