データ復旧・修復・復元・診断・消去

消費税増税強硬推進派、2025年までに30%を目指す。投稿記事数は肆阡以上!

hdd@468x15

[031] AWStatsでのW3C拡張ログ形式の解析方法

2015/05/21


スポンサーリンク

「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
とすればよい。

これで両者を完全に切り分けることができる。

関連記事

更新履歴

スポンサーリンク

hdd@468x15


kanren

-インターネット, コンピュータ, サーバー
-, ,