かえでBlog

色々なことを徒然と……

Apache ローテーションの設定

      2013/04/29

apacheのログが3か月で600Mを超えてしまった……

このままだとログが肥大するだけなのである一定期間が過ぎると新しいログに置き換えるローテーションの設定を行おうと思います。

vi /etc/logrotate.d/apache2

で中に入り

/var/log/apache2/*log {
monthly ←年単位ならyearth ?月単位ならmonthに変更
rotate 120 ←何回分のログまで保持するか(120回(10年)分までログを保持)
missingok ←対象のファイルがなくても処理を行う
notifempty ←中身が空の場合ローテーションを行わない
sharedscripts ←この行以降に記述された処理をワイルドカードの指定に関わらず、1度だけ実行する
postrotate ←endscriptまでの処理を行う
/bin/kill -HUP `cat /var/run/apache2.pid 2>/dev/null` 2> /dev/null || true
endscript
}

を設定すればいいとのことです。

バーチャルホスト等でログがドメイン毎に異なる場合は

/var/log/apache2/*/*log {
monthly
rotate 60
missingok
notifempty
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/apache2.pid 2>/dev/null` 2> /dev/null || true
endscript
}

と赤字のパスを変更すればOKです。

保存したあとに

/usr/sbin/logrotate /etc/logrotate.conf

を実行すればローテーションが適応されます。

ローテーションの情報は

cat /var/lib/logrotate.status

を行うことで確認できますし、ローテーションがきとんと行われているかどうか確認したい場合は

記載されている日付にローテーションで指定した日付以上前に設定すればよいです。

例えば

/var/lib/logrotate.statusで確認すると
"/var/log/apache2/*log" 2010-7-11

になっていた場合、(本日の日付が2011年7月12日の場合)

/var/log/apache2/*log? の設定はmonthlyだったので

"/var/log/apache2/*log" 2010-6-10

に変更しapatheを動かすとローテーションが作動します。

これで/var/log/apache2/ のlogが日付access_log-20100712となってればOKです。

 - 備忘録 , ,