8.1 FreeBSD 11.2 RELEASE - apache24 - ログ解析ツール - analog

 
8.1.1 概要・ports
8.1.2 analog.cfg の編集
8.1.3 /usr/local/www/cgi-bin/anlgform.pl の編集
8.1.4 jpuform.html の編集
8.1.5 apache の設定の確認
8.1.6 表示
8.1.7 検索文字の日本語化

8.1.1 概要・ports

 細かな解析ができる点ですぐれてはいますが、analog は 2009年以降、日本のユーザ会の活動が停止しているようで、最新バージョンを日本語化することが困難な状況になっています。  わたしとしては今後は webalizer か awstats を使用することをお勧めしているのですが、FreeBSD 8.4 RELEASE の analog のページにアクセスする方がたくさんいらしているようなので記述することにします。

cd /usr/ports/www/analog/
make
make install

8.1.2 analog.cfg の編集


/usr/local/etc/analog.cfg
 が analog のコンフィグレーションファイルです。  以下の項目について編集します。  前半の方に同様の記述があって書き換える部分が

LOGFORMAT COMBINED
LOGFILE /var/log/httpd-access.log	←	ログファイル名が異なる場合は編集します
# LOGFILE /old/logs/access_log.*
# OUTFILE Report.html
# HOSTNAME "[my organisation]"		←	コメントをはずしてホスト名を入力します
 apache のログファイル名は、FreeBSD のデフォルトでは、/var/log/httpd-access.log になっているはずです。  /usr/local/etc/apache/httpd.conf でログファイル名を変更している場合は、それに合わせて変更します。  /etc/newsyslog.conf で apache のログをローテーションさせている場合は、ローテーションさせた以前のログもまとめて解析したいと思うかもしれません。  その場合は、「LOGFILE /var/log/httpd-access.log*」と最後に「*」をつけてください。  以前のログもまとめて解析してくれます。  末尾に以下をの行を加えます。  日本語でドメインを表示するためのファイルです。UTF-8 でのファイルになりますので文字コードが違う場合は適宜合わせてください。

DOMAINSFILE	/usr/local/share/analog/lang/jpudom.tab

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


/usr/ports/www/analog/work/analog-6.0/anlgform.pl
 を CGI 実行ディレクトリにコピーして

cp /usr/ports/www/analog/work/analog-6.0/anlgform.pl /usr/local/www/apache24/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.

@forbidden = qw(LOGFORMAT APACHELOGFORMAT DEFAULTLOGFORMAT
                APACHEDEFAULTLOGFORMAT HEADERFILE FOOTERFILE UNCOMPRESS
                OUTFILE CACHEOUTFILE LOCALCHARTDIR ERRFILE DNS CGI
                SETTINGS PROGRESSFREQ LANGFILE DESCFILE);
 修正するのはごくわずかです。  FreeBSD の場合、1行目を以下のように書き換えます。

#!/usr/local/bin/perl -T
 26行目の  # 4) の行の下に、

$analog = '/usr/local/bin/analog';
 という1行を追加します。  29行目の APACHEDEFAULTLOGFORMAT の1語を削除します。

@forbidden = qw(LOGFORMAT APACHELOGFORMAT DEFAULTLOGFORMAT
                HEADERFILE FOOTERFILE UNCOMPRESS
                OUTFILE CACHEOUTFILE LOCALCHARTDIR ERRFILE DNS CGI
                SETTINGS PROGRESSFREQ LANGFILE DESCFILE);

8.1.4 jpuform.html の編集

 UTF-8 で analog のレポート編集用の画面を作成します。

cp /usr/local/share/analog/lang/jpuform.html /パス/.
 パスは apache のドキュメントルート配下の置きたい位置です(外部からアクセスできないようなディレクトリが望ましい)。  そのままでは、アクセスできないので、編集します。  編集するのは次の個所です。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Analog フォーム・インタフェース</title>
</head>

<body>
<h1><!-- img src="/images/analogo.gif" alt="" --> Analog フォーム・インタフェース</h1>

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

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

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

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

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

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

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

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

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

<strong><font color=red>注意 : 以下の指示に従って環境を設定し終わるまで、
このフォームは動作しないでしょう。例えば、ボタンさえ現れないかもしれません。
環境設定を終了した後、この文節を削除してください。<br>
</font></strong>
 CGI の起動を有効にします。16行目のコメントを解除します。

<form action="/cgi-bin/anlgform.pl" method="POST">
 不要なコメントを削除します。

<strong><font color=red>注意 : 以下の指示に従って環境を設定し終わるまで、
このフォームは動かないでしょう。例えば、ボタンさえ現れないかもしれません。
環境設定を終了した後、この文節を削除してください。<br>
</font></strong>
 を

<-- <strong><font color=red>注意 : 以下の指示に従って環境を設定し終わるまで、
このフォームは動かないでしょう。例えば、ボタンさえ現れないかもしれません。
環境設定を終了した後、この文節を削除してください。<br>
</font></strong> -->
 で、コメントアウトします。

8.1.5 apache の設定の確認

 apache で cgi が動作することを事前に確認します。  詳細は「6. cgi を動作させる」をご参照ください。

8.1.6 表示

 これで準備完了のはずです。  jpuform.html を

/usr/local/www/apache24/data
 に置いているならば、http://ホスト名/jpuform.html をブラウザで表示してみてください。

 おおむね、こういう表示が出てくるはずです。それで、「統計情報出力」のボタンをクリックするとアクセスログを解析した結果が出力されるはずです。

 注意点として、ログが小さなうちは動作しません。出力にかかる時間が1秒以下だと、うまく出力を整形できないようです(笑)。解析する元気もなくて・・・。

8.1.7 検索文字の日本語化

 上記設定のままですと「リンク元URLレポート」「検索語句レポート」「検索単語レポート」の中の漢字が、%mn の形式で表示されるので、何が何やらわかりません。  それをうまく日本語に変換する perl スクリプトがあったのですが、現在のバージョンには対応していません。  ユーザ会のページにあったものを使おうとしましたが、これも現在のバージョンでは対応できません。  面倒になったので作ったものをここに置いておきます。
urldecode.pl
 urldecode.pl は、ダウンロードした時点では、urldecode.txt になっていますので、urldecode.pl と rename して、実行権を与えることを忘れないで下さい。  下記の ports が必要ですので、インストールしてください。

cd /usr/ports/japanese/p5-Jcode
make
make install
 UTF-8 で書いてありますので、他の文字コードにするのであれば、文字コードを変え、Jcode->new($_)->utf8; の箇所を他の文字コードに変えてください。  ダウンロードしたら、適切なディレクトリ(ここでは仮に /usr/local/www/cgi-bin としています)に置いて、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行で書きますので間違えないようにしてください。urldecode.pl のディレクトリは適宜変えてください。  これで、もう一度、jpuform.html から「統計情報出力」のボタンをクリックしてみてください。  間違いがなければ、「検索語句レポート」「検索単語レポート」の日本語コードが読める形で表示されているはずです。  「リンク元URLレポート」は変換しません。うまく変換できない語句もあります。わたしのところでは 1/30 の確率で文字化けします。