[031] AWStatsでのW3C拡張ログ形式の解析方法
「AWStats」というアクセス解析ソフトがあります。これでIISの「W3C拡張ログ形式」を解析する方法を紹介します。
AWStatsとは?
AWStatsは、無料で使うことのできるログ解析ソフト(GNU GPL)である。
この種のソフトにはAnalogをはじめ多数あるが、
その中でも高機能であり、かつ表示もグラフィカルで非常に見やすい。
必要なもの
PerlとWEBサーバ。
WEBサーバはIISでもApacheでもよい。
ActivePerlのインストール
AWStatsの動作には、Perlが必要となる。
http://www.activestate.com/
からActivePerlを入手し、インストールを行う。
IISが入っていれば、ActivePerlのインストール時に
・Create IIS script mapping for Perl
・Create IIS script mapping for Perl ISAPI
のチェックが出るので、これを双方ともチェックしておく。
mapping(マッピング)とは、CGIが実行可能なように、
サーバの環境を設定することである。
これで*.plが実行可能になる。
(*.cgiを関連付けるには別途設定が必要)
ファイル入手
http://awstats.sourceforge.net/からDownloadを選択し
「awstats-XX.zip(例:awstats-60.zip)」を入手する。
2004年03月現在、最新安定ヴァージョンは6.0である。
Last stable version is 6.0 – 2004-02-28 15:35
各言語が1つのファイルに収録されているので
ダウンロードの際に言語を気にする必要はない。
AWStatsのインストール
入手したファイルを解凍する。
¥awstats-60¥awstats-6.0¥wwwroot¥
にある5つのディレクトリを、IIS公開ディレクトリに置く。
また、解析結果はブラウザで表示されるので、
WEBサーバーを実行しておく。
AWStatsの設定ファイル
AWStatsの設定は設定ファイルを書き換えて行う。
デフォルトでは「awstats.pl」と同じ場所に
「awstats.model.conf」というファイル名で保存されているので、
「awstats.conf」とリネームする。
複数サイトの解析を行う場合は、
「awstats.aaa.conf」と「awstats.bbb.conf」
のように分ける方が賢明→後述
このファイルはテキストファイルであるため、
テキストエディターで編集できる。
先頭に「#」を付けることでコメント化することができるので、
元の設定を「#」で残しながら編集すると良い。
Logファイルの場所指定(50行目付近)
処理対象のLogファイルの場所を指定する。
絶対パスで指定する場合は、LogFile="C:/Inetpub/wwwroot/cgi-bin/ex040320.log"となるが、
awstats.plと同じ場所に置く場合は、LogFile="ex040320.log"だけで指定できる。
ログ項目の指定(110行目付近)
取得しているログ項目を指定する。
予め1-4(5,6)の設定が用意されている。
2 – Old IIS log format (IIS W3C log format)
とあるので、一見これで良さそうだが、
今回取得しているW3C拡張ログ形式はカスタマイズされており、
これに当てはまらない。
従って、"your_own_personalized_log_format"を宣言し、
項目を自分で指定する必要がある。
下記のような項目でLogを取得している場合、
#Fields: date time cs-method cs-uri-stem cs-uri-query cs-username
c-ip cs-version cs(User-Agent) cs(Referer) sc-status sc-bytes(実際には1行)
設定は下記のようになる。
%time2 %method %url %query %logname %host %other
%ua %referer %code %bytesd(実際には1行)
よって
LogFormat= “your_own_personalized_log_format"
LogFormat = “%time2 %method %url %query %logname
%host %other %ua %referer %code %bytesd"(実際には1行)
とすればよい。
なお、Apacheのcombined形式(RefererとUser-Agentが後ろに入ったもの)の場合は、
予め用意されているため、
LogFormat= 1
だけで済む。
項目区切りの設定(125行目付近)
ログの各項目がどのような形で区切られているかを指定する。
ログ項目の指定で1-4(5,6)の場合は、
区切りが分かっているのでこのパラメータは使用されない。
今回の場合は、ログ項目の指定が1-4(5,6)ではないので、
パラメータを指定しなければならない。
各項目が" “(半角スペース)で区切られているので
LogSeparator=" "
とする。
ドメインの指定(144行目付近)
解析するログのドメインを指定する。
SiteDomain="www.aaa.com"
DNSLookupの指定
Logに於いて、接続者のリモートホストが
IPアドレス(XXX.XXX.XXX.XXX)で記録されている場合、
そのままの形で処理するには
DNSLookup=0
とする。
これをDNSLookupしてXXXX.ne.jpなどの形にするには
DNSLookup=1
とする。
但し、かなりの時間を要する。
解析ファイル設置場所の指定(194行目付近)
AWStatsは、解析した結果をファイルにして残すのだが、
そのファイルの設置場所を設定する。
awstats.plと同じ場所にするには
DirData="."
とする。
下記のように、絶対パスで指定することも可能である。
DirData="C:/awstats_data"
Query区切りの指定(604行目付近)
URLに引数を持つサイトで、引数を伴う記号が
「/index.html?X=001&Y=002」のように「?」の場合は
URLQuerySeparators="?;"
とする。
Queryの指定(622行目付近)
URLに引数を持ったサイトの場合、
引数も含めて解析しないと解析にならない。
(「/index.htm」と「/index.html?X=001&Y=002」が同じ扱いではまずい)
引数がある場合、
URLWithQuery=1
と指定する。
言語の指定(850行目付近)
解析結果の言語を指定する。
デフォルトでは自動
Lang="auto"
となっているが、明示的に指定することもできる。
日本語の場合は
Lang="jp"
中国語(簡体中文)の場合は
Lang="cn"
とする。
下記のように、他の言語も指定可能である。
Albanian=al, Bosnian=ba, Bulgarian=bg, Catalan=ca,
Chinese (Taiwan)=tw, Chinese (Simpliefied)=cn, Czech=cz, Danish=dk,
Dutch=nl, English=en, Estonian=et, Euskara=eu, Finnish=fi,
French=fr, Galician=gl, German=de, Greek=gr, Hebrew=he, Hungarian=hu,
Icelandic=is, Indonesian=id, Italian=it, Japanese=jp, Korean=kr,
Latvian=lv, Norwegian (Nynorsk)=nn, Norwegian (Bokmal)=nb, Polish=pl,
Portuguese=pt, Portuguese (Brazilian)=br, Romanian=ro, Russian=ru,
Serbian=sr, Slovak=sk, Spanish=es, Swedish=se, Turkish=tr, Ukrainian=ua,
Welsh=wlk
言語ファイルの指定(857行目付近)
言語ファイルの場所を指定する。
DirLang="./lang"
この中に各言語のファイルが格納されている。
時間の設定(1223行目付近)
W3C拡張ログ形式はカスタマイズ可能であるが、
時間はGMT(Greenwich Mean Time:グリニッジ標準時)で記録されている。
当然、日本はこれと9時間ずれているので、そのままでは困る。
よって9時間のズレを指定し、日本時間に修正する。
LoadPlugin="timezone +9″
但しこれを行うと、AWStatsの処理時間が大幅に長くなる。
AWStatsの実行
実行に際し使う設定ファイルが「awstats.aaa.conf」である場合、
awstats.plのあるディレクトリに移動し、
「awstats.pl -config=xxx -update」とする。
「awstats.XXX.conf」が見付からなかった場合「awstats.conf」を探すので
「awstats.conf」とリネームしている場合、xxxは何でも良い。
すると処理が進むので、暫く待つ。
C:¥Inetpub¥wwwroot¥cgi-bin>awstats.pl -config=XXX -update
Update for config “C:¥Inetpub¥wwwroot¥cgi-bin/awstats.conf"
With data in log file “C:/Inetpub/wwwroot/cgi-bin/ex040320.log"…
Phase 1 : First bypass old records, searching new record…
Searching new records from beginning of log file…
Phase 2 : Now process new records (Flush history on disk after 20000 hosts)…
終了すると、その結果が表示される。
Jumped lines in file: 0
Parsed lines in file: 145846
Found 13 dropped records,
Found 33 corrupted records,
Found 0 old records,
Found 145800 new qualified records.
この時「解析ファイル設置場所の指定(194行目付近)」で設定した場所に
「awstatsMMYYYY.txt(例:awstats032004.txt)」という
解析ファイルができていることを確認する。
解析ファイルは、設定ファイルを「awstats.xxx.conf」とした場合は
awstatsMMYYYY.xxx.txtして生成される。
解析結果の閲覧
サーバのIPアドレスが「XXX.XXX.XXX.XXX(例:192.168.0.20)」とすると、
ブラウザから
http://XXX.XXX.XXX.XXX/cgi-bin/awstats.pl
を見ればよい。
設定ファイルを「awstats.xxx.conf」とした場合は
http://XXX.XXX.XXX.XXX/cgi-bin/awstats.pl?config=xxx
とすれば見ることができる。
表示には時間だけでなく、CPUの処理(負荷)が必要になるので注意のこと。
複数サイト解析
設定ファイルの「awstats.XXX.conf」に於いて、
「xxx」の部分を分ければ、複数のサイトの解析も可能になる。
例えば「www.aaa.com」と「www.bbb.com」の2つのサイトを解析する場合、
設定ファイルを「awstats.aaa.conf」と「awstats.bbb.conf」の2つ用意し、
「awstats.pl -config=aaa -update」と「awstats.pl -config=bbb -update」を実行すれば
2つの解析ファイル「awstatsMMYYYY.aaa.txt」「awstatsMMYYYY.bbb.txt」が生成される。
これらの結果を見る時は、
http://XXX.XXX.XXX.XXX/cgi-bin/awstats.pl?config=aaa
http://XXX.XXX.XXX.XXX/cgi-bin/awstats.pl?config=bbb
とすればよい。
これで両者を完全に切り分けることができる。
関連記事
更新履歴
- 2004/03 作成
- 2004/07 加筆、修正