analog は、WWW サーバのログファイルを統計解析して、
結果を HTML 形式で出力します。
他にも統計解析アプリケーションはいっぱいありますが、
analog は日本語対応していてなかなか嬉しいです。
用意するもの
参考ページ
解凍、コンパイル
拾って来た analog-5.32.tar.gz を解凍します。
% cd /somewhere
% zcat /somewhere/analog-5.32.tar.gz | tar -xf -
% cd analog-5.32
|
Makefile は src/ にあるので、必要に応じて Makefile を変更します。
変更したらコンパイルします。
% cd src
% cp Makefile Makefile.orig
% vi Makefile
% cd ..
% make
|
analog.cfg
設定ファイルである analog.cfg を編集します。
% cp analog.cfg analog.cfg.orig
% vi analog.cfg
% diff analog.cfg analog.cfg.orig
< LOGFORMAT COMMON
< LOGFILE /usr/local/apache2/logs/access_log #(解析対象のログファイルを指定)
< OUTFILE index.html #(出力ファイル名)
< HOSTNAME "[www.your.server.name]" #(出力ファイルの表題に使われるだけ)
< HOSTURL http://www.your.server.name #(出力ファイルの表題に使われるだけ)
< LANGUAGE JAPANESE
< LANGFILE lang/jpe.lng
< DESCFILE lang/jpedesc.txt
< DOMAINSFILE lang/jpedom.tab
< DNSFILE dnscache
< DNS WRITE
< DNSGOODHOURS 672
----
> LOGFILE logfile.log
> # OUTFILE Report.html
> # HOSTNAME "[my organisation]"
|
ログファイルは、common 形式では access のみの情報となりますが、
combined 形式なら access, agent, referer の情報を含みます。
- access
日時・ホスト・アクセスファイルなど
- agent
相手方ブラウザの名前・バージョン
- referer
どのような語句検索でページに辿り着いたか
Apache におけるログ形式の変更は
Apache2 のインストールと設定を参照してください。
common 形式ではなく、combined 形式のログファイルを用いる場合は、
LOGFILE の前に LOGFORMAT COMBINEDを入れておきます。
.....
LOGFORMAT COMBINED
LOGFILE /usr/local/apache2/logs/access_log
.....
|
ドメインレポートは、ホスト名を頼りにどこの国からアクセスしたかを報告します。
log ファイルに IP番号しかないとき、DNS を参照してホスト名を知る必要があります。
しかしいちいち nslookup してたのでは大変なので、一度調べたものはキャッシュします。
DNSFILE はそのキャッシュファイルの名前を指定します。
DNS WRITE は、まず dnscache を参照し、なければ nslookup し、
結果を dnscache に付け加えます。
一度検索に成功して dnscache に入っているデータベースを
どれくらいの頻度で確認するかを決めるのが DNSGOODHOURS です。
この場合は 672 時間(4週間)となっています。
anlgform.pl
以下、analog を /usr/local/analog/analog-5.32/ 以下に
インストールするものとします。
% cp anlgform.pl anlgform.pl.orig
% vi anlgform.pl
% diff anlgform.pl anlgform.pl.orig
< $analog = '/usr/local/analog/analog-5.32/analog'; #(右辺はインストールする場所)
|
perl がインストールされている場所が /usr/bin/perl でない場合は、
1行目の #!/usr/bin/perl を変更しておきます。
jpform.html
% cd lang
% cp jpeform.html jpeform.html.orig
% vi jpeform.html
% diff anlgform.pl anlgform.pl.orig
< <h1><img src="/usr/local/analog/analog-5.32/images/analogo.gif" alt="" Analog フォーム・インタフェース</h1>
< <form action="/usr/local/analog/analog-5.32/cgi-bin/anlgform.pl" method="POST">
----
> <h1><!-- img src="/images/analogo.gif" alt="" -->
> <!-- form action="/cgi-bin/anlgform.pl" method="POST" -->
|
インストール
インストールは単にファイルのコピーです。
# mkdir -p /usr/local/analog/analog-5.32
# cp -R analog analog.cfg anlgform.pl ./lang ./images /usr/local/analog/analog-5.32/
|
テスト
# cd /usr/local/analog/analog-5.32
# ./analog
|
これでカレントディレクトリに index.html というファイルが出来ていればOKです。
図ファイルの置き場所
analog は index.html ファイルの他、
いくつかのグラフ(code.png, dir.png など)も作ります。
これら png ファイルは index.html ファイルと
同じディレクトリになければなりません。
また、images/ 以下の絵ファイルも使いますので、
images/ ディレクトリを index.html と同じディレクトリに置いておきます。
作業の自動化(crontab)
crontab で analog を自動的に動かします。
0 0 * * * /somewhere/make_analog_report
|
上の例では、 毎日0時0分にスクリプト make_analog_report を動かします。
make_analog_report の中身は次のようなものです。
#!/bin/csh -f
cd /usr/local/analog/analog-5.32
./analog
|
/usr/local/analog/analog-5.32 に移動してからでないと、
analog がうまく動かないみたいです。
検索語句、検索単語欄の日本語化けを直す
analog の出力では、「検索語句」欄などの日本語が化けてしまっています。
これを直すのに、
postanalog という perl スクリプトを使います。
postanalog.txt を拾って来たら postanalog という名前にして実行権を与えます。
% mv postanalog.txt postanalog
% chmod +x postanalog
|
postanalog は nkf の perl 拡張モジュールである NKF.pm を使います。
port の japanese/p5-nkf をインストールすればOKです。
NKF.pm は /usr/local/lib/perl5/site_perl/5.005/i386-freebsd/NKF.pm
に入ります。
なお nkf はバージョン 2.0 以上がよいそうです。
analog の出力では、検索語句の順位が低いものは切り捨てられていますが、
大文字小文字を区別しなければ同じものもあります。
そこで、切り捨て内ですべて出力させるオプションを付けておきます。
# ./analog +C"REFSITEFLOOR 1r" +C"SEARCHQUERYFLOOR 1r"
+C"SEARCHWORDFLOOR 1r" +C"SEARCHQUERYCHART OFF"
+C"SEARCHWORDCHART OFF" (1行でかく)
|
得られた出力ファイル(index.html とする)を postanalog に食わせると、
標準出力に文字化けが直ったものが出力されます。
% ./postanalog -i index.html
|
postanalog の -i オプションは大文字小文字を区別せず小文字に変換するものです。
その他、 -q0 ですべての順位を、-q10 で10位までの検索語句を表示する、
というオプションもあります。-q のかわりに -w で同じように
順位の低い検索単語を切り捨てられます。
トラブルシューティング
何らかの理由により ports が使えない場合、nkf はソースからコンパイルします。
まず、http://www01.tcp-ip.or.jp/~furukawa/nkf_utf8/からソースを取って来ます。
[2003/10/07]現在、nkf202.tar.gzが最新です。
解凍、コンパイル、インストールをします。
% tar zxvf nkf202.tar.gz
% cd nkf202
% vi Makefile (環境によって、パラメータ[CC,,CFLAGS,PERL]を適当に修正する)
% make
% su
# install -cs -o bin -g bin -m 755 nkf /usr/local/bin
# install -c -m 644 nkf.1 /usr/local/man/man1
# install -c -m 644 nkf.doc /usr/local/man/cat1/nkfdoc.0
|
Perl モジュール(NKF.pm など)を作り、インストールします。
% perl Makefile.PL && make && make test
% su
# make install
|
参考サイト
参考サイト
FreeBSD の部屋
Last modified: Wed Apr 20 16:14:12 JST 2011