Apacheログ解析は基本とはいえ、めんどくさいので今まで手を付けていなかった。内容はそれほど詳しくなくてもいいので手軽のが無いかな?と探している時に見つけたVisitorsってのが早くて簡単らしいので、試してみました。
以下、CentOS4にインストールする例。
適当な場所で解凍して、makeして、使いやすい場所にコピー。
wget http://www.hping.org/visitors/visitors-0.7.tar.gz tar visitors-0.7.tar.gz cd visitors-0.7 make cp visitors /usr/bin/ cd ..
nkfも出力のhtmlを変換するために必要なのでインストールされていない場合はインストールしておく。これも上記のVisitorsと同様の流れになる。
wget http://osdn.dl.sourceforge.jp/nkf/15302/nkf205.tar.gz tar zxvf nkf205.tar.gz cd nkf205 make cp nkf /usr/bin cd ..
graphvizをインストールすると左のようなグラフィカルにURIのつながりを表示することができるので出来るならインストールしておくと楽しい。yumとかなら以下を設定する事で管理が簡単。CentOSだと「/etc/yum.repos.d/CentOS-Base.repo」を編集。
[dag] name=Dag RPM Repository for Redhat EL4 baseurl=http://apt.sw.be/redhat/el$releasever/en/$basearch/dag gpgcheck=1 enabled=1 gpgkey=http://dag.wieers.com/packages/RPM-GPG-KEY.dag.txt
んで、普通にyum install でインストールできる。
yum install graphviz
さて、実際の実行。Googleからの検索キーワードとかが文字化けしないようにエンコード指定を変更する必要があるらしい。
visitors -P http://example.com -A -m 100 /path/to/access_log | nkf -wm0 | \ sed ’s#\(\)#\1\n#’ > \ visitors.html visitors -P http://example.com -V /path/to/access_log > graph.dot cat graph.dot | tr =_% ^$= | nkf -wmQ | tr ^$ =_ | \ sed ’s#\(^\tnode.*\)\]#\1,fontname=”/usr/share/fonts/ja/TrueType/kochi-gothic-subst.ttf”\]#’ > \ graph2.dot dot graph2.dot -Tpng > visitors.png
実行するとこんな感じ。
やってみた感想としては、10万件程度のログで1秒!。これなら簡単に日時処理に組み込めそうな感じがします。