Home » パソコン » 自宅サーバを始めよう » ログ(AWStats)
ログ(AWStats)
ログ解析 |
サーバーの構築が一段落して運用が軌道に乗ると、一日(一定期間)にどれくらいの訪問者数があるか、自分の作成したコンテンツのうち、どのコンテンツに人気があるか、どのコンテンツに人気が無いか、どの時間帯にアクセスがあるか(サーバーの負荷はどの時間にあるか)などが気になります。
そこで、登場するのがログ解析ソフト。
以下に、管理人の環境での適用事例を紹介します。 |
AWStatsとは? |
『AWStats』とは、フリーのログ解析ソフトです。 参考:ログ解析ツールの比較 |
ActivePerlのインストール |
AWStatsの動作には、ActivePerlというソフトが別途必要になります。
【入手】 2004年7月現在 ActivePerl 5.8.4 build 810 Windows MSI 12.5MB を使用
【インストール】 |
AWStatsのインストール |
【入手】 2004年7月現在 awstats-61.exe を使用
【インストール】 ・file (required if first install) [y/N] ?y Enterキー
・Your web site. virtual server or profile name: 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のログを標準で取得している場合は、 管理人の環境では取得している項目が非常に多く、以下のようなフォーマットになっています。 #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
となります。 DNSLookup=1
とします。 |
解析ファイル設置場所の指定(195行目付近) |
AWStatsは、解析した結果を独自管理のファイルにして残します。
そのファイルの設置(保存)場所をこのパラメータで設定します。 DirData="."
とします。
DirData="C:/awstats_log" |
処理対象外のアドレスの指定(453行目付近) |
ログを解析する際に、処理対象外にするIPアドレス、HOSTなどを指定します。 SkipHosts="192.168.0.2 127.0.0.1"
とします。複数指定の場合は半角スペースで区切ります。 |
処理対象外のファイルの指定(483行目付近) |
ログを解析する際に、処理対象外にするファイルを指定します。 SkipFiles="AWStats.pl"
とします。 |
Query区切りの指定(604行目付近) |
URLに引数を持つサイトで、引数を伴う記号が「/index.html?A=001」のように「?」の場合は URLQuerySeparators="?;"
とします。 |
Queryの指定(625行目付近) |
URLに引数を持ったサイトの場合、引数も含めて解析する必要があります。 URLWithQuery=1
と指定します。 |
時間の設定(1260行目付近) |
W3C拡張ログ形式で記録される時間はGMT(Greenwich Mean Time:グリニッジ標準時)です。 日本はこれと9時間ずれているので、そのままでは正確なログが読めません。 このパラメータで9時間のズレを指定し、日本時間に修正することが可能です。 LoadPlugin="timezone +9"
但しアクセスの多いサイトでこれを行うと、AWStatsの処理時間が大幅に長くなります。 |
実行 |
ログ解析は、コマンドプロンプトから実行します。
C:\Inetpub\wwwroot\cgi-bin>awstats.pl
-config=XXX -update
アクセスの多いサイトではココでしばらく時間がかかります。
Jumped
lines in file: 0
処理が終了したら、「解析ファイル設置場所の指定(195行目付近)」で設定した場所に
「awstatsMMYYYY.txt(例:awstats072004.txt)」という解析ファイルができていることを確認してください。 |
解析結果の閲覧 |
ブラウザから指定アドレスにアクセスすると解析結果の閲覧が可能です。 http://192.168.0.10/cgi-bin/awstats.pl
にアクセスしてください。 |
複数ホストを持っている場合の使い分け <050404 UP> | |||||||||||||||
複数ホストある状態でログ解析を一つのサーバーで行う場合、awstats.conf、アクセスするページのパラメーターが必要になります。 <例>http://tarou.co.jp と http://hanako.co.jp の二つのサーバーがあった場合を想定します。
|
ログファイルの指定について <050404 UP> |
サーバートラブルなど何らかの要因でログアクセスが正しくできなかったときには、失敗した日にちのログファイルを指定してログ解析を実行したいわけですが、その都度 設定ファイル(.conf)の『LogFile=』を書き換えるのは結構な手間です。またせっかく安定している環境の設定ファイルは触りたくないのが人情です。 awstats.pl -config=xxxxx -LogFile=○:\xxxx\xxxx.log -update 上記コマンドの『\xxxx\exMMYYYY.log』の部分に任意のログファイル名をフルパスで指定してください。ここでの指定は、設定ファイル(.conf)のLogFile=の記述より優先されます。 ※抜けている日にちより新しいログがある場合は、うまく読み込めないようです。そのあたりの回避策は調べているんですが、わかり次第アップします。 |
ログファイルを指定して自動実行 <050404 UP> | ||||||
・自宅サーバーは以前から構築していたけど、ログの解析をしていなかった。ログファイルはある
などなど、解析対象のログファイルがたまっているけど、1ファイル実行して終了したら次へ・・・なんて余裕は普通の人はありません。対象が2~3個などであれば作業の手間もしれてますが、一月単位などで対象ファイルがあるともう大変。
ここで、自動実行ファイルといえばスケジューラソフトでの実行やバッチファイル(.bat)が思いつくと思います。しかし、ログ解析は指定したログファイルの解析が終わったのを確認してから次のファイルを実行しなければなりません。スケジューラソフトでは、その間隔をどれくらい取ればいいかわかりません。バッチファイルでは『前の処理が終了するまで待機する』っていう命令があったような気がしますが、管理人が覚えていません。というか、知りません(笑)
Windows ユーザーで Perl って聞くと取り合えず拒絶反応が出ると思います。実際、管理人もそうです。
後は、終わるまでほったらかしです。 |