「ApacheLogViewer」では毎日のアクセス解析に時間がかかりすぎるのと、今後のさらなるログの増大を考えると不安を覚えたので、いろいろと試してみた結果、「Visitors」というアクセスログ解析ソフトが超高速でよかったです。 大体、10万行を1秒~2秒ほどで処理してくれます。しかもサイトへの人の流れをフローチャート化することも可能。ユニークユーザーベースで解析してくれるだけでなく、検索ボットは除外したり、特定のリファラをブラックリストにしてノーカウントすることも可能。非常にすばらしいです。 また、Linux版だけでなく、Windows版も一応提供されています。やろうと思えばWindowsで解析することも可能です。 というわけで、実際にインストールして実運用するまでの手順をメモしておきます。参考になれば幸い。 = インストール = Visitors - fast web log analyzer http://www.hping.org/visitors/index_jp.php ページの真ん中ぐらいからダウンロード可能です。RHEL4におけるインストールはこんな感じ。ほかのLinuxでもあまり変わらないかと。 {{{ wget http://www.hping.org/visitors/visitors-0.7.tar.gz tar xvzf visitors-0.7.tar.gz cd visitors_0.7 make cp visitors /usr/bin/ }}} wgetでダウンロードして、tarで解凍、解凍後のディレクトリ「visitors_0.7」に移動して、makeを実行して生成した後、できあがった「visitors」というファイルを/usr/bin/にコピーするというわけです。基本的にこれだけ。 = ■使い方 = 実際の使い方は公式ページにも「例」として載っていますが、より詳細な使い方はドキュメントを参照。 Visitors, on line documentation for 0.7 こんな感じで使います。 {{{ visitors -A -m 30 access.log -o html > report.html }}} 「-A」というのはオプションを全部付けるという意味で、ページビューやユニークユーザーといった基本的な解析情報以外に「-GKUWRDOB」という複数のオプションを一気に付けるのと意味は同じです。GoogleとAdSenseのクローラーの解析、Googleからの検索フレーズの解析、ユーザーエージェント、週間の時系列別アクセスマップ、リファラ、ドメイン別、OS別、ブラウザ別での解析がこれで可能になります。「-m」というのは最大何件表示にするかという意味で、今回は「30」となっているので各項目ごとに上位30件が表示されます。「access.log」は各環境ごとに解析対象となるファイルを指定。「access.log.*」といった複数指定も可能。「-o」は結果をファイルに出力するという意味で、「html」か「text」が選べます。これを最後に「report.html」として出力するわけです。 自分のサイトの利用パターン、内部リンクでの循環や外部リンクからどれぐらい来ているのか、Googleなどからはどれぐらい来ているのかといったことを解析するには以下のようにします。 {{{ visitors -A -m 30 access.log -o html --trails --prefix http://gigazine.net > report.html }}} 「--trails」が利用パターンを解析するオプションで、「--prefix」のあとに対象となる自分のサイトアドレスのドメインを入力します。こうすることで、ページの巡回され具合がわかります。どういうルートで特定のページに至る人が多いかがわかります。 ただ、これだけだとわかりにくいので、フローチャート表示にしてみましょう。 = ■Graphvizによるフローチャート生成 = まずは以下のページからGraphvizをダウンロードしてインストール。yumなどでもインストール可能。 {{{ Graphviz http://www.graphviz.org/Download..php }}} RHEL4の場合はこんな感じ。 {{{ wget http://dag.wieers.com/rpm/packages/graphviz/graphviz-2.2-1.2.el4.rf.i386.rpm rpm -ivh graphviz-2.2-1.2.el4.rf.i386.rpm }}} まずはフローチャート作成の元になる「graph.dot」を作ります。 {{{ visitors access.log --prefix http://gigazine.net -V > graph.dot }}} それから、PNG画像を作成します。 {{{ dot -Tpng graph.dot > graph.png }}} これだけでできあがり。お手軽ですね。 = ■実運用上の工夫 = 実際に毎日ログを解析させようと思うと、この一連のコマンドをシェルスクリプトにしてCronにでも登録するのが簡単なのですが、GIGAZINEの場合は出力するファイルに日付を付けています。 抜粋するとこんな感じ。「`date --date '1 day ago' +%Y%m%d`」の部分が日付処理の部分です。 {{{ visitors -GKZWMRDXYS -m 30 access_log --trails --prefix http://gigazine.net -o html > `date --date '1 day ago' +%Y%m%d`report.html visitors access_log --prefix http://gigazine.net -V > graph.dot dot -Tpng graph.dot > `date --date '1 day ago' +%Y%m%d`graph.png }}} これで「20070304」などの数値がファイル名の頭に付くので、管理が楽になります。「1 day ago」が付いているのは、3月5日に解析するのは3月4日のアクセスログなので、こうすることで日付を1日前に戻しているわけです。 {{{ visitors実行時の指定で、「-A -m 30 -o html」などがオプションです。使えるオプションをまとめてみました。 -G GoogleのクローラとGoogle Adsensedのクローラのアクセス記録を表示します。上位のページほど、最新にアクセスされたページです。 -K Google経由のアクセスで検索に使用されたキーワードを表示します。上位のキーワードほど、検索回数が多いキーワードになります。 -Z Google経由のアクセスで検索に使用されたキーワードを表示します。上位のキーワードほど、最新のアクセスに使用されたキーワードになります。 -H Google経由でのアクセスで、そのユーザの言語の種類を表示します。 -U アクセスのあったユーザのエージェント情報を表示します。(OS、ブラウザなど) -W アクセス量の情報を週(月曜日から日曜日)と時間(0時から23時)別で表示します。明るい場所がアクセスの多い状態、暗い場所は、アクセスが少ない状態を表します。 -M アクセス量の情報を月(1月から12月)と日にち別で表示します。明るい場所がアクセスの多い状態、暗い場所は、アクセスが少ない状態を表します。 -R リファラーの情報を表示します。上位の情報ほど、最新アクセスの情報です。 -D アクセス元のトップレベルのドメインを表示します。 -O アクセスしてきたユーザのオペレーティングシステムの種類を表示します。 -B アクセスしてきたユーザのブラウザの種類を表示します。 -X 存在しないファイルファイルへのアクセスエラー情報を表示します。 -Y 1訪問あたり(ユニークユーザ単位)のページビューを表示します。 -S 検索ロボットやスパイダーのアクセス状況を表示します。 -A 「-GKUWRDOB」を指定したのと同じです。 -m 各表示内容で表示する件数を指定します。「-m 30」と指定すると各要素ごとに30件ずつ表示します。 -o 出力するファイル形式を指定します。指定できるのは、2種類で「html」「text」です。「-o html」とすれは、htmlファイルを出力します。 -T サイト内のでのページ間移動の情報を表示します。「-P サイトのURL」オプションと同時に使用します。 }}}