はじめに
CentOS6でApacheログをlogrotateに一週間周期でローテーションするように追加設定した時の手順を記載します。
※CentOSではlogrotateは標準インストールされていて、デフォルトではsyslog等が1日周期でローテーションされています。
実装方法
■anacloneの無効化
実行される時間がランダムになると、Amazon S3バックアップをローテーション時に削除されるものをAmazon S3にアップロード等の処理と併用する際等に、何かと不便なのでanacronをまず無効化する。
yum install cronie-noanacron yum remove cronie-anacron
■logrotateコンフィグファイル
◇/etc/logrotate.d/hatted
- apacheをインストールすると、
/etc/logrotate.d/httpd
が自動で作成されます。# yum install httpd
- 今回apacheのログ(access.log, error.log)は1週間周期でローテーションするのでそこだけ追記します。
# cat /etc/logrotate.d/httpd /var/log/httpd/*log { weekly rotate 53 missingok notifempty sharedscripts delaycompress postrotate /sbin/service httpd reload > /dev/null 2>/dev/null || true endscript }
動作確認
■動作確認の方法
- 前回のログローテート日を調整する
# cat /var/lib/logrotate.status logrotate state -- version 2 "/var/log/yum.log" 2014-12-8 "/var/log/boot.log" 2014-12-8 "/var/log/dracut.log" 2014-12-8 "/var/log/httpd/error.log" 2014-12-8 "/var/log/all.log" 2014-12-8 "/var/log/wtmp" 2014-12-8 "/var/log/spooler" 2014-12-8 "/var/log/btmp" 2014-12-8 "/var/log/maillog" 2014-12-8 "/var/log/secure" 2014-12-8 "/var/log/httpd/access.log" 2014-12-8 "/var/log/messages" 2014-12-8 "/var/account/pacct" 2014-12-8 "/var/log/cron" 2014-12-8 "/var/log/td-agent/td-agent.log" 2014-12-8 ~
日付を1日前や1週間前や1ヶ月前などに変更する
- cronからのlogrotate実行時間を調整する
# cat /etc/cron.d/dailyjobs # run-parts 02 4 * * * root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.daily 22 4 * * 0 root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.weekly 42 4 1 * * root [ ! -f /etc/cron.hourly/0anacron ] && run-parts /etc/cron.monthly
/etc/cron.dailyの実行年月日時分秒を実行したいタイミングに変更する
■デバッグの方法
- デバッグモードで確認する(実行はされない)
# logrotate -d /etc/logrotate.d/httpd reading config file /etc/logrotate.d/httpd reading config info for /var/log/httpd/*log Handling 1 logs rotating pattern: /var/log/httpd/*log weekly (90 rotations) empty log files are not rotated, old logs are removed considering log /var/log/httpd/access.log log does not need rotating considering log /var/log/httpd/error.log log does not need rotating
※上記log does not need rotatingの原因は、ローテーション期間の一週間が過ぎてない為にでたメッセージ。
元記事はこちらです。
「[CentOS]logrotateでapacheログを一週間周期でローテーションする」