logrotate(ログローテート)の動作確認
Linuxにおけるlogrotate(ログローテート)の機能についておさらい。
ログローテートが実行される際の流れは、概ね以下のようになる。
cronが主設定ファイルの/etc/cron.daily/logrotateを読む。
/etc/logrotate.conf の読み込みから logrotate が起動される。
また/etc/logrotate.conf はそのディレクティブ “include” により、
/etc/logrotate.d/ 配下にある各ログ個別の設定を読み込む。
※http://www.asahi-net.or.jp/~aa4t-nngk/logrotate.htmlから抜粋
しかし今回は、logrotateの設定をどこにどう書くかという話でなく、
動作確認や、うまく動作しない時の対処について。
(confのオプション等には上記サイトに書いてあり、なかなか参考になる)
まずテストから。-dオプションで実行せずにテストする。
以下は、logrotate.dディレクトリ以下の全てがテストの対象となる。
# logrotate -d /etc/logrotate.conf
個別のスクリプトのみをテストしたいのであれば、”/etc/logrotate.d/個別のスクリプト”
を指定する。
# logrotate -d /etc/logrotate.d/httpd
-dvとして-v オプションもつければ詳細表示してくれる。
-f オプションで強制的に実行する
# logrotate -f /etc/logrotate.conf
正常にログのローテーションが行われているか確認する。
最後にローテーションされたログファイルの日付を確認するには、
/var/lib/logrotate.statusの中身をみる。
# cat /var/lib/logrotate.status
ローテーションを実際に実行させて確認したい場合、/var/lib/logrotate.statusの日付を
ローテーションされる周期の日付より前に戻してから/usr/sbin/logrotateを実行してみる。
参考:http://blog.goo.ne.jp/cgeryuji/e/746d27a3d2ec92f751cc78cbc05906f9
ログローテートが機能していないようだ、という時には様々な原因が考えられるが、
取り急ぎ確認すべき設定ファイルは以下・・・くらいでよいかな。
/etc/logrotate.conf
/etc/logrotate.d/syslog(他、個別設定ファイル)
/etc/cron.daily/logrotate
/var/lib/logrotate.status
以前ハマった時に参考にさせてもらったサイトをメモしておく。
logrotateでログファイルがローテーションされない事への対処
しかしさんざん調べたあげく、原因はconfファイルに全角文字が混入していたことであった。
・・・力抜けました。
次回はログローテートファイルに日付を設定する方法について。
追記
別件で再度ハマったのでメモを。設定ファイルに何も問題ないことが確認できているのに
ログローテートが動作しない、ということがあった。
テストしたら(最初にやればよかった)、以下のエラーメッセージが。
error:syslog:1 duplicate log entry for /var/log/messages
ログエントリが重複してる??
/etc/logrotate.d/配下を覗いてみると、、、syslogのコピーがあった!
設定変更のためsyslogファイルを編集しようとして、バックアップの意図でコピー
したのだが、削除してなかったのだ。これを削除したところ、テストでエラー発生せず、
翌日からローテートされるようになった。うーむ、こんなこともあるんだ・・・
参考:http://isolinear.info/blog/archives/cat16/cat10/
分かってみれば非常につまらないミスではあるが、ひとつ学習したわけだ。
/etc/logrotate.d/に余計なものは置かないように注意、です。