Apacheログの独自解析

最終更新日時:2007-04-06 14:00:09
Apache

Apacheのログの解析には商用からオープンソースなものまで様々なものがあります。
オープンソースなものならAnalogとかAWStatsとかWebalizerとか。。。。
しかしながら、どれもこれもかゆいところに手が届かないというか、帯に短したすきに長しというか。
なかなか自分で満足できるログ解析の仕組みがなかったりします。
商用ならもっと満足度の高いものがあると思いますが、ログ解析ソフトってかなり高価なんですよね。
だったら自分で解析しちゃえ!というのが独自解析の趣旨です。
ここでは、独自解析する際の方針や使える技のメモを簡単に紹介します。

アクセスログの設定


解析するには、まずアクセスログがどのようなファイルに、どのようなフォーマットで出力されるのかが重要です。
私が便利だと思うのは、

・日ごとに00:00:00-23:59:59までのアクセスログを1ファイルに出力
・フォーマットはcombined

です。
上記の具体的な設定方法についてはApacheのアクセスログ設定を参照。
複数ドメイン対応の場合には、combinedではなく、VirtualHost情報も含めるべきですが、ログ解析プログラムを適用する時点では、単一ドメインのアクセスログにしておくべきです。
※マルチドメイン対応のログ解析を独自に行うつもりはないので

日ごとに1ファイルに出力しておけば、ログ解析を実行するタイミングは1日1回前日分を解析すればよいことになります。(リアルタイムで解析することは考えていません)
また、アクセスログが1ファイルで1日ごとに完結しているので、ログ解析結果に表示されている結果もきちんと1日ごとに完結していることになります。

マッチング


アクセスログがcombined形式である場合には、以下のPerlの正規表現でマッチングが可能です。

 m/^([^ ]+) ([^ ]+) ([^ ]+) (\[[^\]]+\]) "(.*) (.*) (.*)" ([0-9\-]+) ([0-9\-]+) "(.*)" "(.*)"$/;


ここでマッチさせて得られたフィールドを元に統計情報を作成していくことになります。

お問い合わせは 掲示板 にて。