サーバーのアクセスログファイルを直接解析するCGIスクリプトです。各HTMLファイルに画像タグなどを埋め込まなくてもアクセス状況を見られます。
Apacheのログファイルを読み込んで解析し、結果を表示します。稼動中のApacheのログファイルを直接解析するのがポイントです。
この方法ではサーバーへの負荷の関係で長期間にわたる統計処理ができないので、Webalizerなどのツールや他のCGIとの併用、またはそういった統計処理を必要としない用途での使用を想定しています。
以下の特徴があります。
ログファイルの書式(LogFormat)は、Apacheのデフォルトの書式(?)のcombineという書式で動作します。
「Jcode.pm」という文字コード変換モジュールを使用しています。サーバーにインストールするか、
#!/usr/local/bin/perl -I../lib
のようにJcode.pmの場所を指定して使います。
このスクリプトはサーバーのログファイルを直接読み込み、多くの行数を処理するためにサーバーへかなりの負荷がかかります(CPU負荷、メモリ使用量)。このため、共用やレンタルのサーバー、アクセス数が多いサイトの場合は注意してください。
メモリ使用量の点はバージョン1.6.1で大幅に改善しました。通常は問題にならない程度になったと思います。
ちなみに、月間約10万ヒット(3333Hits/day)、5万ページヴュー(1666PV/day)のサイトのログをOS:Linux、CPU:Pentium 166MHz、Memory:48MBのサーバーで解析した場合の処理時間(ターンアラウンドタイム)は9秒程度でした。速いCPUのサーバーなら処理時間も気にならない程度になるのではないでしょうか。
ファイルをアップロードし、パーミッションを適切に設定します。
daa/
index.cgi
conf.cgi
bar.gif
.htaccess # アクセス制限用
また、index.cgiの1行目のPerlへのパスを合わせます。「#!/usr/local/bin/perl」か「#!/usr/bin/perl」の場合が多いようです。
conf.cgiをエディタで開き、以下の個所を編集します。
# アクセスログファイル $data_file = '/var/log/apache/access.log';
Apacheのログファイルの場所です。ログファイルにはアクセスログとエラーログの2種類ありますが、アクセスログの方です。
# サイトのURL $site_url = 'http://uttsu.com/';
自分のサイトのURLです。このURLを元に、解析結果のページに自サイトの各ページへのリンクが張られます。
# 解析から除外するURL # このURLへのアクセスは解析から除外されます @except_url = ( '/r/http://', '/r.cgi/', );
解析から除外する、自サイトのURLです。http://からではなく、ホスト名の後ろの / からのURLで指定します。
# 解析から除外するリンク元 # このリンク元からのアクセスは解析から除外されます @except_referrer = ( $site_url, # 'http://www.google.co.jp/', # 'http://websearch.yahoo.co.jp', );
解析から除外する、特定のページを経由したアクセスです。指定したリファラーを含むアクセスは、解析から除外されます。
ブラウザでindex.cgi(またはdaaというディレクトリ)へアクセスすると、日付のリストが表示されます。解析したい日付をクリックします。
各日ごとの解析結果のページでは、
が表示されます。
各日ごとの解析結果ページでは、キーワードによる検索ができます。対象はその日1日のログの全文で、複数のキーワードによる絞込み検索(AND検索)もできます。
検索の結果がハイライト表示されます。