MacOSX(Tiger)でapacheのログをawstatsで解析する

すでにanalogで解析をしていますが、こちらも試してみました。

macportsにあったのでインストール。

# sudo port install awstats
**********************************************************************
Add the following to your Apache httpd.conf, save, and restart Apache:
Alias /awstatsclasses "/opt/local/www/awstats/classes/"
Alias /awstatscss "/opt/local/www/awstats/css/"
Alias /awstatsicons "/opt/local/www/awstats/icons/"
ScriptAlias /awstats/ "/opt/local/www/awstats/cgi-bin/"
<Directory "/opt/local/www/awstats/">
Options None
AllowOverride None
Order allow,deny
Allow from all
</Directory>
Find your sample config file in /opt/local/etc/awstats, rename it to
"awstats.domain_name.conf", and edit it to configure Awstats. You
can then access Awstats by pointing your browser to:
http://yourdomain/awstats/awstats.pl
**********************************************************************

あとで気がついたのですがmacportsでインストールしたあとに表示されるメッセージの
Alias /awstatsicons “/opt/local/www/awstats/icons/”
は間違いでは?
/opt/local/www/awstats/icons/は存在せず
/opt/local/www/awstats/icon/があります。

Alias /awstatsicons “/opt/local/www/awstats/icon/”
になおしときました。

設定ファイルのLogFormatの部分は
[apache]
LogFormat “%h %l %u %t \”%r\” %>s %b \”%{Referer}i\” \”%{User-Agent}i\” %D” combined
[awstats:customize]
LogFormat = “%host %other %logname %time1 %methodurl %code %bytesd %refererquot %uaquot %other”
になりました。単純に%Dに対してotherを一個追加しました。

あとはSiteDomainで指定した名前を-config引数にして
perl /opt/local/www/awstats/cgi-bin/awstats.pl -update -config=trac.makotokw.com
で解析を行えます。

ですが、logrotateしている過去のログも解析してみることにしました。awstatusではロードバランサでWebサーバを分散した場合などのためにログをマージするツールが同梱されています。それを使ってlogrotateされたログを一つのファイルにまとめます。

sudo perl /opt/local/www/awstats/tools/logresolvemerge.pl /opt/local/apache2/logs/logs/trac.makotokw.com-access_log.* > trac_merged_old_log

次に-logfile引数を使ってマージしたログファイルを解析させます。

perl /opt/local/www/awstats/cgi-bin/awstats.pl -update -config=trac.makotokw.com -logfile=/Users/makoto_kw/trac_merged_old_log
log

これで解析okなのですが、現状ちょっと困っている点が二つ。

1) LogFormatを複数指定できないこと
analogではLogFormatを複数指定できて順番にチェックされるのですが、awstatsではどうも一つしか設定できないようなのです。途中でLogFormatを変えた場合などに困ります。

2) 過去のログは解析されない
解析したことのあるもっとも最新のログよりも古いログは解析対象にならず無視されます。実装上仕方がなさそうですが過去のログが見つかった場合などにはもう一度全部解析やり直しになりそうです。

LogFormatを複数指定できなかったので一部のLogを解析できなかったのですが、それでもなかなか見た目の表示がきれいな解析ツールなのでとりあえず満足しています。