ログ(AWStats)

ログ解析

サーバーの構築が一段落して運用が軌道に乗ると、一日(一定期間)にどれくらいの訪問者数があるか、自分の作成したコンテンツのうち、どのコンテンツに人気があるか、どのコンテンツに人気が無いか、どの時間帯にアクセスがあるか(サーバーの負荷はどの時間にあるか)などが気になります。

そこで、登場するのがログ解析ソフト。
幸い、管理人の使用しているサーバーはWindows2000でWEBサーバーはIISなので、ログ解析ソフトで実績のある『AWStats』というソフトが利用可能です。

以下に、管理人の環境での適用事例を紹介します。

AWStatsとは?

『AWStats』とは、フリーのログ解析ソフトです。
ログ解析ソフトにはAnalogなど他の有名ソフトも多数あるようですが、高機能、表示がグラフィカルで見やすい、動作実績、紹介ページの豊富さなどから、管理人お勧めのソフトです。

参考:ログ解析ツールの比較

ActivePerlのインストール

AWStatsの動作には、ActivePerlというソフトが別途必要になります。

【入手】
ActivPerlのホームページを開き、左の『LANGUAGES』にある『ActivePerl』をクリックします。
ActivePerlの詳細ページで『DOWNLOAD NOW』というボタンをクリックするとユーザー情報の入力画面が 表示されますので、適当に入力して『NEXT』をクリックします。ダウンロードリストのページが表示されますので、Windows向けのダウンロード項目をクリックして任意の場所にダウンロードしてください。

2004年7月現在 ActivePerl 5.8.4 build 810 Windows MSI 12.5MB を使用

【インストール】
インストーラの指示に従って進めれば問題ありません。
IISが入っていれば、ActivePerlのインストール時に
・Create IIS script mapping for Perl
・Create IIS script mapping for Perl ISAPI
のチェックが出るので、チェックが入っていることを確認しておいてください。

AWStatsのインストール

【入手】
AWStatsのホームページを開き、上部のメニューから『Download/Contribs』をクリックします。
ダウンロード可能なファイルのリストに『AWStats』とい項目があるので、その中から『awstats-XX.exe』をクリックしてください。ダウンロードサイトのリストが表示されるので、適当なサイトからダウンロードしてください。

2004年7月現在 awstats-61.exe を使用

【インストール】
ダウンロードしたファイルを実行するとインストーラが起動しますので、指示にしたがって進めてください。
インストール途中でコマンドプロンプトが表示されていくつかの質問があります。
・Apache Web server path ('none' to skip):
>none Enterキー

・file (required if first install) [y/N] ?y Enterキー

・Your web site. virtual server or profile name:
>www.test.com Enterキー

Press ENTER to continue... Enterキー

Press ENTER to finish... Enterキー

という感じで特に問題は無いと思います。少なくとも管理人の環境では問題ありませんでした。

インストールが完了したら、インストール先のフォルダ(通常は『C:\Program Files\AWStatswwwroot\』)に ある5つのディレクトリをIISの公開フォルダにコピーしてください。

AWStatsの設定ファイル

AWStatsの設定は設定ファイル(~.conf)を書き換えて行います。

デフォルトでは先ほどコピーした5つのフォルダのうちの『cgi-bin』に「awstats.model.conf」というファイル名で保存されているので、コピーして「awstats.conf」とリネームしてください。
ファイル自体はテキストファイルなので、メモ帳などの適当なテキストエディタで編集が可能です。

先頭に「#」を付けることでコメント化することができますので、元の設定を「#」でコメントにして、その下に同じ行(内容)をコピーしてこちらを編集すると良いと思います。

Logファイルの場所指定(51行目付近)

処理対象のLogファイルの場所を指定します。

オリジナルの状態では、

LogFile="/var/log/httpd/mylog.log"

などになっていますので、IISのログファイルが保存されているフォルダにあわせて、

LogFile="C:\WINNT\system32\LogFiles\W3SVC1"

など、任意のフォルダを指定して書き換えます。

ログ項目の指定(117行目付近)

取得しているログの項目に併せてフォーマットを指定します。
オリジナルの状態では、

LogFormat=1

などになっています。予め1-4(5,6)の設定が用意されていて、IISのログを標準で取得している場合は、
2 - Old IIS log format (IIS W3C log format)
で良いようです。
ログの取得項目を任意で変更している場合は、その項目に合わせてフォーマットを手動で記述する必要があります。

管理人の環境では取得している項目が非常に多く、以下のようなフォーマットになっています。

#Fields: date time c-ip cs-username s-sitename s-computername s-ip s-port cs-method cs-uri-stem cs-uri-query sc-status sc-win32-status sc-bytes cs-bytes time-taken cs-version cs-host cs(User-Agent) cs(Cookie) cs(Referer)

この場合は、以下のような記述となります。

LogFormat="%time2 %host %logname %other %other %other %other %method %url %query %code %other %other %bytesd %other %other %virtualname %ua %other %referer"

項目区切りの設定(127行目付近)

ログの各項目がどのような形で区切られているかを指定します。

オリジナルの状態では、

LogSeparator=" "

などになっています。ログフォーマットが1-4(5,6)の場合はこのパラメータは使用されません。
管理人の環境ではログフォーマットを任意に指定したので、このパラメータの指定が必要です。
各項目は" "(半角スペース)で区切られているので

LogSeparator=" "

となります。

ドメインの指定(146行目付近)

解析するログのドメインを指定します。
これは、取得した独自ドメインを記述します。

SiteDomain="www.test.com"

DNSLookupの指定(180行目付近)

ログを解析する際に、接続者のリモートホストがIPアドレス(XXX.XXX.XXX.XXX)で記録されている場合、 そのままの形で処理するには

DNSLookup=0

となります。
これをXXXX.ne.jpなどの形にするには

DNSLookup=1

とします。
但し、アクセス数の多いサイトでは解析にかなりの時間が必要になります。

解析ファイル設置場所の指定(195行目付近)

AWStatsは、解析した結果を独自管理のファイルにして残します。 そのファイルの設置(保存)場所をこのパラメータで設定します。
awstats.plと同じ場所にするには

DirData="."

とします。
任意の保存場所に変更する場合は、下記のように絶対パスで指定することも可能です。

DirData="C:/awstats_log"

処理対象外のアドレスの指定(453行目付近)

ログを解析する際に、処理対象外にするIPアドレス、HOSTなどを指定します。
画面確認のためにLAN内でアクセスした場合などは、そのアクセスログは必要ありません。
その場合は、

SkipHosts="192.168.0.2 127.0.0.1"

とします。複数指定の場合は半角スペースで区切ります。

処理対象外のファイルの指定(483行目付近)

ログを解析する際に、処理対象外にするファイルを指定します。
AWStatsでログ解析を行った結果はwebアクセスで確認することになるのですが、そのページの アクセスログなどは必要ありません。
その場合は、

SkipFiles="AWStats.pl"

とします。

Query区切りの指定(604行目付近)

URLに引数を持つサイトで、引数を伴う記号が「/index.html?A=001」のように「?」の場合は

URLQuerySeparators="?;"

とします。

Queryの指定(625行目付近)

URLに引数を持ったサイトの場合、引数も含めて解析する必要があります。
「/test.htm」と「/test.html?A=001」が同じ扱いではカウントがおかしくなります。
引数がある場合、

URLWithQuery=1

と指定します。

時間の設定(1260行目付近)

W3C拡張ログ形式で記録される時間はGMT(Greenwich Mean Time:グリニッジ標準時)です。 日本はこれと9時間ずれているので、そのままでは正確なログが読めません。 このパラメータで9時間のズレを指定し、日本時間に修正することが可能です。

LoadPlugin="timezone +9"

但しアクセスの多いサイトでこれを行うと、AWStatsの処理時間が大幅に長くなります。

実行

ログ解析は、コマンドプロンプトから実行します。
実行に際し使う設定ファイルが「awstats.XXX.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/ex040701.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: 171
Found 15 dropped records,
Found 28 corrupted records,
Found 0 old records,
Found 128 new qualified records.

処理が終了したら、「解析ファイル設置場所の指定(195行目付近)」で設定した場所に 「awstatsMMYYYY.txt(例:awstats072004.txt)」という解析ファイルができていることを確認してください。

解析結果の閲覧

ブラウザから指定アドレスにアクセスすると解析結果の閲覧が可能です。
サーバのIPアドレスが「192.168.0.10」とすると、ブラウザから

http://192.168.0.10/cgi-bin/awstats.pl

にアクセスしてください。
表示には時間だけでなくCPUの処理が必要になるので、サーバーのスペックによってはそれなりの時間が必要です。

複数ホストを持っている場合の使い分け <050404 UP>

複数ホストある状態でログ解析を一つのサーバーで行う場合、awstats.conf、アクセスするページのパラメーターが必要になります。
設定ファイル(.conf)については、それぞれ適切な記述を行ってください。

<例>http://tarou.co.jp と http://hanako.co.jp の二つのサーバーがあった場合を想定します。

  tarou について hanako について
awstats.conf
の名称
awstats.tarou.conf awstats.hanako.conf
ログ解析 awstats.pl -config=tarou -update awstats.pl -config=hanako -update
解析結果 awstatsMMYYYY.tarou.txt awstatsMMYYYY.hanako.txt
解析結果の
参照サイト
http://xxx.xxx.x.xx/cgi-bin/awstats.pl?config=tarou http://xxx.xxx.x.xx/cgi-bin/awstats.pl?config=hanako

ログファイルの指定について <050404 UP>

サーバートラブルなど何らかの要因でログアクセスが正しくできなかったときには、失敗した日にちのログファイルを指定してログ解析を実行したいわけですが、その都度 設定ファイル(.conf)の『LogFile=』を書き換えるのは結構な手間です。またせっかく安定している環境の設定ファイルは触りたくないのが人情です。
そんなときは、以下のコマンドで任意のログファイルの解析を行うことが可能です。

awstats.pl -config=xxxxx -LogFile=○:\xxxx\xxxx.log -update

上記コマンドの『\xxxx\exMMYYYY.log』の部分に任意のログファイル名をフルパスで指定してください。ここでの指定は、設定ファイル(.conf)のLogFile=の記述より優先されます。

※抜けている日にちより新しいログがある場合は、うまく読み込めないようです。そのあたりの回避策は調べているんですが、わかり次第アップします。

ログファイルを指定して自動実行 <050404 UP>

・自宅サーバーは以前から構築していたけど、ログの解析をしていなかった。ログファイルはある
・ログ解析ソフトをawstats.confに乗り換える
・サーバーのトラブルなど何らかの要因でログ解析ファイルが無くなった

などなど、解析対象のログファイルがたまっているけど、1ファイル実行して終了したら次へ・・・なんて余裕は普通の人はありません。対象が2~3個などであれば作業の手間もしれてますが、一月単位などで対象ファイルがあるともう大変。
ということで、自動実行のファイルを作りましょう。

ここで、自動実行ファイルといえばスケジューラソフトでの実行やバッチファイル(.bat)が思いつくと思います。しかし、ログ解析は指定したログファイルの解析が終わったのを確認してから次のファイルを実行しなければなりません。スケジューラソフトでは、その間隔をどれくらい取ればいいかわかりません。バッチファイルでは『前の処理が終了するまで待機する』っていう命令があったような気がしますが、管理人が覚えていません。というか、知りません(笑)
ということで、こういった処理が得意(らしい)な Perlで自動実行ファイルを作ってみましょう。

Windows ユーザーで Perl って聞くと取り合えず拒絶反応が出ると思います。実際、管理人もそうです。
でも、今回は難しいことはしません。というか、Perl を知らない管理人が難しいことをできるはずもありません。
また、Perl って Windows で動くの?なんて思う人もいると思います。でも、awstats を使っているユーザーなら大丈夫。 awstats をインストールする前に下準備として Perl のインストールをしたので、その環境なら問題ありません。
もしログ解析を別の環境でするのなら、その環境に Active Perl のインストールだけ実行してください。 ファイルの作成手順も実行手順も以下のように本当に簡単なんで、だまされたと思って試してください。

1. メモ帳などのテキストエディタを開いて、以下のような文字(命令)を書く

system 'awstats.pl -config=xxxxx -LogFile=○:\xxxx\xxxx.log -update';

書き出しは「system」です。その後ろには半角スペースが入ります。 処理の内容(ログ解析のコマンド)は「'(シングルコーテーション)」でくくります。 最後に処理はここまでという意味で「;(セミコロン)」で閉じます。簡単に説明すると、先頭の『system』が処理を実行する命令です。この後に続く処理を実行して終了すれば次の処理へ移ります。ということで、この命令を1行にして、必要な分だけ書けば良いんです。

(例)
system 'awstats.pl -config=tarou -LogFile=C:\log\ex050301.log -update';
system 'awstats.pl -config=tarou -LogFile=C:\log\ex050302.log -update';
system 'awstats.pl -config=tarou -LogFile=C:\log\ex050303.log -update';
system 'awstats.pl -config=tarou -LogFile=C:\log\ex050304.log -update';
system 'awstats.pl -config=tarou -LogFile=C:\log\ex050305.log -update';

2. 必要な記述が終わったら、HDDの任意の場所に名前を付けて保存する。
そのとき、ファイルの拡張子を『pl』にする。
(例)log.pl
3. コマンドプロンプトで作成したファイルを実行する
(例)C:\Inetpub\wwwroot\cgi-bin>log.pl

後は、終わるまでほったらかしです。
Perl っていう響きがイヤですけど、今回の作業に関してはこんなに簡単です。


自宅サーバーWebRing << 前 |ID=231 |次 >> 乱移動前後5表示サイト一覧