何台もサーバがあると毎日のlogwatchで大量にメールが来てしまうので、週一だけ通知されるように変更してみました。
「logwatch --range help」を見た感じ、「Date::Manip」があれば range で色々指定出来るらしいので・・・
# cpan -i 'Date::Manip' # perl -MDate::Manip -e 'print ParseDate("-7 days"),"\n";' 2011112300:00:48
実際にコマンドラインで期間を指定して実行してみる。
# logwatch --print --range "between -7 days and -1 days" ################### Logwatch 7.3 (03/24/06) #################### Processing Initiated: Wed Nov 30 00:01:02 2011 Date Range Processed: between -7 days and -1 days ( 2011-Nov-23 / 2011-Nov-29 ) Period is day. :
見た感じ上手く行っているように見えるので、設定ファイルの方も変更する。
/etc/logwatch/conf/logwatch.conf
Range = "between -7 days and -1 days"
動作確認します・・・コマンドラインで実行したときと同じような表示になっていればOK
# logwatch --print ################### Logwatch 7.3 (03/24/06) #################### Processing Initiated: Wed Nov 30 00:01:24 2011 Date Range Processed: between -7 days and -1 days ( 2011-Nov-23 / 2011-Nov-29 ) Period is day. :
cron.daily の 0logwatch を weekly に 移動する。
# mv /etc/cron.daily/0logwatch /etc/cron.weekly/0logwatch
※yum update で logwatch が更新されると cron.daily に設定が復活してしまいます(多分)。
※logrotate で7日間ログが保存されるように設定しておく必要があります。
???
なぜか yum の logwatch がおかしなことになった・・・
どうも「/usr/share/logwatch/scripts/logfiles/yum/applydate」でログファイルの日付を '%b %d %H:%M:%S' の形式から '%m/%d/%y %H:%M:%S' の形式に変換しようとしていてそれが上手くいっていないっぽい?