Apache rotatelogs

2月のサーバー更新でCentOSに移行しApacheをwebサーバーとして使用しています。

AWStatsを利用してアクセス解析を行うためにバーチャルドメインごとにアクセスログを分割して取る必要がありApache標準機能のCustomlogコマンドを利用していましたがローテーションせず今に至りました。

その結果ファイルサイズか450MBを超えるサイトが出始めてAWStatsの動作自体には特に問題はありませんがやはりファイル自体を開くだけでも膨大な時間がかかるようになり実用にならなくなってきたので今までのWindows Serverで行ってきた24時間ごとに別ファイルにする管理方法に切り替えることにしました。

今回はApache標準機能のrotatelogsコマンドを利用することにしました。


現在の設定

CustomLog /home/vwww/00_log/1_ny6a.net/access_log combined

変更後の設定

CustomLog “|/usr/sbin/rotatelogs -l -f /home/vwww/00_log/1_ny6a.net/access_log%Y%m%d 86400” combined


パイプ経由でrotatelogsを行います。

更にオプション -l を挿入してJSTのローカルタイムでローテートが実行されるようにしています。 オプション無しではGMTで実行されます。

また、オプション -f を挿入し、最初のログエントリーが無い場合でもローテート直後に新しいログファイルを強制的に生成させることにしました。

参考サイト: Apache標準機能のCustomlogコマンドを利用

1時間ごとにAWStatsの自動更新を実行しているのでその際にファイルが見つからずエラーになることを防止するためです。 (しなくても問題ないような気もしますが・・・念のため)

この変更によりローテート後の最新稼働ファイル名がaccess_logYYYMMDDになるのでASWStatsのパラメーターをaccess_log%YYYY-0%MM-0%DD-0に変更しました。
WebminのLog File Rotationでも設定できそうなのでこちらでDailyのローテート設定を行う方法もありだと思います。 この場合はメインファイル名はaccess_logでローテート後のファイル名に日付が付加されるのでAWStatsのログファイル名パラメーターを変更する必要はなかったと思われますがしばらくはApacheの標準機能で様子を見てみます。

スポンサーリンク


当ブログにお越し下さいましてありがとうございます。
ブログランキングに参加しております。
皆様の応援が励みになりますのでよろしければ応援クリックくお願い致します。
にほんブログ村 車ブログへ
にほんブログ村

シェアする

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

フォローする