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の自動更新を実行しているのでその際にファイルが見つからずエラーになることを防止するためです。 (しなくても問題ないような気もしますが・・・念のため)
スポンサーリンク