15. ログ解析ツール (Analog) 設定

 
 
わたしとしては、2015年6月4日現在、analog は活動が停滞しているようなので、Apache のログ解析としてあまりお勧めしないのですが…。
 案外こちらを見にいらっしゃる方が多いようですので。
 こちらの設定では、analog 6.0 の検索文字を日本語化できません。その設定方法は FreeBSD 10.x-RELEASE の方の analog 解説に記述しておりますので、そちらをご参照ください。
 Analog は、WEB サーバのログを解析して、グラフ表示してくれるツールです。  WEB サーバを立てて、自分でホームページを作ると一体どんな人たちがどれくらい自分のホームページを読んでくれているのか気になるものです。ページごとのカウンタもありますが、それよりもっと詳細に解析するにはとても便利です。
15.1 ports を手に入れる
15.2 analog.cfg の編集
15.3 /usr/local/www/cgi-bin/anlgform.pl の編集
15.4 jpeform.html の編集
15.5 表示してみましょう
15.6 サブドメイン表示
15.7 検索文字の日本語化

15.1 ports を手に入れる

 ports を手に入れます。
    analog → /usr/ports/www/analog/

15.2 analog.cfg の編集

 /usr/local/etc/alnalog.cfg が analog のコンフィグレーションファイルです。  以下の項目について編集しましょう。
LOGFILE  
Apache のログファイル名
HOSTNAME "[www.
仮名
.ne.jp]"
 apache のログファイル名は、FreeBSD のデフォルトでは、/var/log/httpd-access.log になっているはずです。/usr/local/etc/apache/httpd.conf でログファイル名を変更している場合は、それに合わせて変更します。  /etc/newsyslog.conf で Apache のログをローテーションさせている場合は、ローテーションさせた以前のログもまとめて解析したいと思うかもしれません。その場合は、LOGFILE /var/log/httpd-access.log* としてください。以前のログもまとめて解析してくれます。  HOSTNAME は、WEB サーバのホスト名を記入します。  通常の解析には、これで充分です、もう少し突っ込んだ解析結果を得たい場合は、15.6 節を参照してください。

15.3 /usr/local/www/cgi-bin/anlgform.pl の編集

 /usr/local/share/examples/analog/anlgform.pl を /usr/local/www/cgi-bin/ にコピーし、編集して実行権限を与えます。  少々長いですが、最初から31行目くらいまでを引用します。
#!/usr/bin/perl -T
###
###              analog 6.0             http://www.analog.cx/
### This program is copyright (c) Stephen R. E. Turner 1995 - 2004 except as
### stated otherwise.
###
### This program is free software. You can redistribute it and/or modify it
### under the terms of version 2 of the GNU General Public License, which you
### should have received with it.
###
### This program is distributed in the hope that it will be useful, but
### without any warranty, expressed or implied.
### Remember: Even the most carefully-designed CGI programs can accidentally
### have serious security bugs! See docs/form.html for notes on security
### design.
###
### anlgform.pl; the cgi front end for analog

# 1) uncomment (remove everything before $analog) and edit one of the next two
#    lines to give the location (full pathname) of the analog executable.
#       Unix: $analog = '/usr/local/etc/httpd/analog-6.0/analog';
#       Windows: $analog = 'C:\program files\analog 6.0\analog.exe';
# 2) If you're on Unix, edit the first line in this file to give the location
#    of Perl (don't remove the #! though).
# 3) You also need to edit anlgform.html if you want to use the form.
# 4) Add to the forbidden commands below if you want.
 修正するのはごくわずかです。
#!/usr/bin/perl -T
 perl の場所が違うのであれば、正規の場所に書き換えます。  # 4) の行の下に、
$analog = '/usr/local/bin/analog';
 という1行を追加します。  そして
@forbidden = qw(LOGFORMAT APACHELOGFORMAT DEFAULTLOGFORMAT
                APACHEDEFAULTLOGFORMAT HEADERFILE FOOTERFILE UNCOMPRESS
                OUTFILE CACHEOUTFILE LOCALCHARTDIR ERRFILE DNS CGI
                SETTINGS PROGRESSFREQ LANGFILE DESCFILE);
 の中から APACHEDEFAULTLOGFORMAT の1語を削除してください。

15.4 jpeform.html の編集

 euc コードで analog のレポート編集用の画面を作成する場合は jpeform.html を編集します。  元のファイルは、/usr/local/share/analog/lang/ にあります。他のコードを使用する場合は適宜、ファイル名を置き換えて考えます。日本語の場合、Shift-JIS や utf-8 も使えます。このファイルを自分でアクセスしたい、WEB サーバのディレクトリに配置します。外からのぞかれないように、WEB サーバの設定でアクセス権限は工夫します。  そのままでは、アクセスできないので、編集します。  編集するのは次の個所です。
<h1><!-- img src="/images/analogo.gif" alt="" -->
Analog フォーム・インタフェース</h1>

<!-- 以下を編集すること。anlgform.pl も編集する必要がある。 -->

<!-- 最初に、上記の img タグのコメントを取り、必要なら編集しなさい。 -->

<!-- 次に、サーバ内での anlgform.pl の正しい位置を反映するように編集して -->
<!-- 以下の行のコメントを削除しなさい。 -->
<!-- form action="/cgi-bin/anlgform.pl" method="POST" -->

<!-- 他の環境設定ファイルを以下で指定できる。 -->
<!-- input type=hidden name="cg" value="/analog/other.cfg" -->

<!-- 多くのシステムでは、IMAGEDIR が /cgi-bin/ 中に無いようにしたいために、 -->
<!-- フォーム上の IMAGEDIR はコマンドライン上とは異なるようにしている。 -->
<!-- input type=hidden name="IMAGEDIR" value="/images/" -->

<!-- あるユーザの設定では、ログファイルは以下のようになるでしょう。 -->
<!-- input type=hidden name="LOGFILE" value="/usr/local/apache/logs/access_log" -->

<input type=hidden name="LANGUAGE" value="JAPANESE">

<!-- これらを編集した後、以下の赤で "強調" した行を削除して下さい。 -->

<hr>
<h2>1. レポートの選択</h2>

<strong><font color=red>注意 : 以下の指示に従って環境を設定し終わるまで、
このフォームは動かないでしょう。例えば、ボタンさえ現れないかもしれません。
環境設定を終了した後、この文節を削除してください。<br>
</font></strong>
 CGI の起動を有効にします。
<!-- form action="/cgi-bin/anlgform.pl" method="POST" -->
 を
<!form action="/cgi-bin/anlgform.pl" method="POST">
 と書き換えます。  不要なコメントを削除します。
<strong><font color=red>注意 : 以下の指示に従って環境を設定し終わるまで、
このフォームは動かないでしょう。例えば、ボタンさえ現れないかもしれません。
環境設定を終了した後、この文節を削除してください。<br>
</font></strong>
 を
<--
<strong><font color=red>注意 : 以下の指示に従って環境を設定し終わるまで、
このフォームは動かないでしょう。例えば、ボタンさえ現れないかもしれません。
環境設定を終了した後、この文節を削除してください。<br>
</font></strong>
-->
 で、コメントアウトしましょう。  これで、jpeform.html の編集は終りです。

15.5 表示してみましょう

 さあ、これで準備完了のはずです。  jpeform.html を、/usr/local/www/data に置いているならば、http://www.
仮名
.ne.jp/jpeform.html をブラウザで表示してみてください。
 おおむね、こういう表示が出てくるはずです。それで、「統計情報出力」のボタンをクリックするとアクセスログを解析した結果が出力されるはずです。

15.6 サブドメイン表示

 解析結果で、ドメイン名が国名程度しか出力されないのはちょっと寂しいですね。もう少し細かく出力したい人は、/etc/analog.cfg の最下行に次の2行を追加してください。
SUBDOMAIN *.*.*
DOMAINSFILE /usr/local/share/analog/lang/jpedom.tab
 それから、下のファイルをダウンロードして、  その内容を、/usr/local/share/analog/lang/jpedom.tab の後ろに追加してください。細かいドメイン名が出力されるようになります。  また、自分のマシンからのアクセスがカウントされると客観的な評価が出来ません。  そういう場合、自分のマシンのドメイン名がわかっているならば、/etc/analog.cfg に以下の1行を追加しましょう。
HOSTEXCLUDE 
自分のマシンのドメイン名

15.7 検索文字の日本語化

 上記設定のままですと「リンク元URLレポート」「検索語句レポート」「検索単語レポート」の中の漢字が、%mn の形式で表示されるので、何が何やらわかりません。  それをうまく日本語に変換する perl スクリプトを作ってくれたえらい人がいます。  日本 Analog ユーザ会様のページに行って、「Helper Application 及びその説明」にある、urldecode.pl をダウンロードさせていただきましょう。  注意書きにもありますが、urldecode.pl は、ダウンロードした時点では、urldecode.txt になっていますので、urldecode.pl と rename して、実行権を与えることを忘れないで下さい。  ダウンロードしたら、anlgform.pl と同一のディレクトリに置いて、anlgform.pl と urldecode.pl を編集します。 (1) anlgform.pl の編集
    open (ANALOG, "|$analog +g-");  # errors here will get caught on close
 の個所を
    open (ANALOG, "|$analog +g-
|/usr/local/www/cgi-bin/urldecode.pl
"); # errors here will get caught on close
 と書き換えます。書き換えるとき下の内容は、1行で書きますので間違えないようにしてください (2) urldecode.pl の編集
        $req = 1 if /%lt;h2>%lt;a NAME="req">/;
        $searchw = 1 if /%lt;h2>%lt;a NAME="searchw">/;
 の個所を
        $req = 1 if /%lt;h2>%lt;a NAME="ref">/;
        $searchw = 1 if /%lt;h2>%lt;a NAME="searchq">/;
        $searchw = 1 if /%lt;h2>%lt;a NAME="searchw">/;
 と書きかえて下さい。  これで、もう一度、jpeform.html から「統計情報出力」のボタンをクリックしてみてください。  間違いがなければ、見事「リンク元URLレポート」「検索語句レポート」「検索単語レポート」の日本語コードが読める形で表示されているはずです。