Home » Programing, Server » Apacheのログローテーション

Check     このエントリーをはてなブックマークに追加

サーバー運用するものにとってログの管理は重要な使命といえる。

というか、自分のApache Webサーバのログがほったらかしでこのままでは

Apacheのログメモリを食いすぎるところだったので、再度見直すことにした。

 

Apacheのログ。今回はLinuxでだいたい入っていると思われる、

loglotateを利用する。

設定内容としては、毎週1回ローテーションし、過去8回分のデータを持つようにする。

loglotateの設定は/etc/loglotate.confにあるので設定例を示す。

# see “man logrotate” for details
# rotate log files weekly
weekly

# keep 4 weeks worth of backlogs
rotate 8 # defaultは4回だが、1ヶ月に一回バックアップをとっているためかぶりをだすため8回に変更

# create new (empty) log files after rotating old ones
create

# uncomment this if you want your log files compressed
compress # 圧縮するように変更

# RPM packages drop log rotation information into this directory
include /etc/logrotate.d

# no packages own wtmp — we’ll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
rotate 1
}

# system-specific logs may be also be configured here.

上記の設定では/etc/logrotate.d以下のファイル設定を見てくれるようなので

Apache用に、/etc/logrotate.d/apacheというファイルを作成。

/usr/local/apache2/logs/access_log /usr/local/apache2/logs/error_log {
missingok # ログファイルがなくても異常終了しない。
sharedscripts # 複数のファイルがある場合に指定する
#ローテーション後Apacheが新しいファイルにロギングできるように再起動する
postrotate
/bin/kill -HUP `cat /usr/local/apache2/logs/httpd.pid`
endscript
}

logrotate自体は定期的に行う機能があるわけではないのでcronに設定が必要。

おそらくデフォルトで/etc/cron.daily/logrotateというファイルがあるので

Dailyでlogrotate設定どおり動いてくれるだろう。

/etc/cron.daily/logrotate(そのまま)

#!/bin/sh

/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate “ALERT exited abnormally with [$EXITVALUE]”
fi
exit 0

ここのページがすごく参考になりました。感謝!

Check     このエントリーをはてなブックマークに追加
タグ: