analogでアクセス解析

カテゴリ: Linux設定・活用
|

このブログも、もう少しで開始から 3ヶ月になり、エントリー数も 50になります。まだまだ、駆け出しの域は出ないとは思うのですが、そろそろログをなんとなく眺めるだけでなく、ツールを使って解析してみることにしました。

ツールとしては、もはや古典の類かもしれませんが、analogを使うことにします。

何故、analogかというと、以前仕事で構築したサイトにインストールしたことがあって、そのとき設定方法などを調べて調整したことがあったので、勝手が分かってるからというのが理由です。

analogを使うと以下のようなことを知ることが出来ます。(主なものです)

  • 月ごとのアクセス数の推移
  • 日ごとのアクセス数の推移
  • 曜日ごとののアクセス数の推移
  • 時間によるアクセス数の推移
  • ブラウザ・UAの割合
  • 利用している OSの割合
  • アクセス元ドメインの割合
  • どのページが多く見られているか
  • 検索サイトから着た場合の検索語

逆に以下のようなことは、(簡単には) 求められません。

  • ユニーク訪問者数 (作者の主義らしいので、analogで実現されることはないでようです)
  • 複数の条件の相関 (Firefoxでアクセスするひとに人気のページなど)
    特定の条件の組み合わせのみならば除外条件などを組み合わせれば可能ですが、データウェアハウスのようにマトリックスやキューブを作成するようなことは出来ないといっていいと思います。

Debianでは、パッケージがあるようですので、手っ取り早く apt-getでインストールします。

インストールが出来たら、解析結果と、access.logを見ながら、自分のブログにあわせて analog.cfgを調整していきます...

どうやら最新版では、日本語の検索語が URLエンコードされたままで、集計されて表示されてしまい、そのままでは役にたたないので、簡単な Perlのスクリプトを作って、生成した index.htmlをデコードすることにしました。.

/etc/analog.cfgで追加したものと、作成した index.htmlの日本語の検索語をデコードするスクリプトは、長くなるので追記に記述します...

analog.cfg (追加分) =========================

# JISだと化けるところがあるので EUCにします。
LANGUAGE JAPANESE-EUC
 
LOGFILE /var/log/apache2/access.log*
 
# デフォルト charsetは Movable typeのために UTF-8なので、拡張子で euc-jpを指定します。
OUTFILE /var/www/analog-results/index.html.euc-jp
 
# DNSキャッシュを使用します。
DNS WRITE
DNSFILE /var/cache/analog/dns/dnscache
 
# ブラウザサマリーと日ごとの集計を有効にします
BROWSERSUM ON
DAILYREP ON
 
# 自分のとこにきた検索サイトでなかったものを追加
SEARCHENGINE http://*goo.ne.jp/* MT
SEARCHENGINE http://*technorati*/* query
SEARCHENGINE http://*/netfind* query
SEARCHENGINE http://*/pursuit query
SEARCHENGINE http://*fresheye.*/* kw
SEARCHENGINE http://*blogger.com/* q
 
# 自分のところに来たロボットぽい UAを追加, RSSで定期的にチェックに来るものもロボット扱い
ROBOTINCLUDE ichiro*
ROBOTINCLUDE *Ask*
ROBOTINCLUDE *Technoratibot*
ROBOTINCLUDE *BlogSearch*
ROBOTINCLUDE *BlogRanking*
ROBOTINCLUDE *Myblog*
ROBOTINCLUDE *blog360*
ROBOTINCLUDE *NEWS360*
ROBOTINCLUDE *BlogsNowBot*
ROBOTINCLUDE *OmniExplorer_Bot*
ROBOTINCLUDE *NAMAAN*
ROBOTINCLUDE *Feed::Find*
ROBOTINCLUDE *NutchCVS*
ROBOTINCLUDE *BlogFinder*
ROBOTINCLUDE *BlogPeople*
ROBOTINCLUDE *BecomeBot*
ROBOTINCLUDE *Exabot*
ROBOTINCLUDE *SideWinder*
ROBOTINCLUDE *RSSdiscovery*
ROBOTINCLUDE *search?engine*
ROBOTINCLUDE *lwp-trivial*
ROBOTINCLUDE *cococ*
ROBOTINCLUDE *Hatena*
ROBOTINCLUDE *RSS_READER*
ROBOTINCLUDE *Cyberz*
ROBOTINCLUDE *Jakarta*
 
# MTの管理用のアクセスは 1つにまとめる
FILEALIAS /mt/mt.cgi*  "/mt/mt.cgi"
 
# ページのアクセスランキングを 上位100個まで 上位表示100位まで表示
REQFLOOR -100r
 
# 検索語を 上位100個まで表示
SEARCHWORDFLOOR -100r

%xxでエンコードされた日本語をデコードするスクリプト ====================

#!/usr/bin/perl
use Encode qw/encode decode/;
sub cv {  $str = shift;
  if ($str =~ /^(%[0-7][a-fA-F0-9])*%[Ee]/) {
     $from = "utf8";
  } elsif ($str =~ /%[89]/) {
     $from = "shiftjis";
  } else {
     $from = undef;
  }
  $str =~ s/%[0-2][a-fA-F0-9]/ /g;
  $str =~ s/%([a-fA-F0-9]{2})/chr(hex($1))/ge;
  if ($from) {
     Encode::from_to($str, $from, "euc-jp");
  }
  $str;
}
while (<>) {
   s/(%[a-fA-F0-9]{2})+/&cv($&)/eg;
   print;
}

「Linux設定・活用」の新着

最近のコメント


最近のコメントを表示...
Powered by Movable Type 7.1.1