Geek-Side

このエントリーをはてなブックマークに追加  

2004/08/25

Analogのインストールと設定

Apacheが出力するLogを1行ずつ眺めていくのは非現実的ですよね。
そこでApacheのログを集計しHTML化して出力してくれるツール,Analogを導入します。

Analogのインストール

Analogのインストールを行う前に依存関係を確かめます。
$ emerge -puv  app-admin/analog
Xのインストールも行われてしまうようでしたが、私のサーバーでは X はいらないので
Xがインストールされないようにしました。
USE="-X" emerge -v  app-admin/analog
としてXがインストールされない様にしました。インストールされたAnalogのバージョンは5.32でした。

Analogの設定

Analogの設定ファイルは/etc/analog/analog.cfgです。
設定ファイルの一部を以下に示します。

#Apacheのログファイルの場所を指定します。
LOGFILE /var/log/apache/access_log*

#出力されるHTMLファイルの場所を指定します。
OUTFILE /var/log/analog/index.html

#言語に日本語を指定します。
LANGUAGE JAPANESE-EUC

#グラフを表示する画像の場所を指定します。
IMAGEDIR images/

#出力されたHTMLファイルのタイトルを指定します。
HOSTNAME "Linux-Air"

#リクエストレポートでページにのみリンクを張ります。
REQLINKINCLUDE pages

#リンク元レポートでリンクを張ります。
REFLINKINCLUDE *

#ログファイルが圧縮されている場合は、ファイルと解凍方法を指定します。
UNCOMPRESS *.gz,*.Z "gzip -cd"

#ブラウザレポートでの表示形式を指定します。
SUBBROW *⁄*

#ファイル種別レポートでの表示形式を指定します。
SUBTYPE *.gz,*.Z

#サーチエンジンのURLを指定します。
SEARCHENGINE http://*google.*⁄* q

#OSレポートでロボットとして集計されるブラウザを指定します。
ROBOTINCLUDE Googlebot*

#ファイル種類別レポートで出力される表示名称を指定します。
TYPEOUTPUTALIAS .html    ".html [Hypertext Markup Language]"

#除外するホスト名を指定します。
HOSTEXCLUDE 192.168.1.*

#リンク元サイトレポートから除外するホスト名を指定します。
REFSITEEXCLUDE http://tma2002.homedns.org/

#リンク元URLレポートから除外するホスト名を指定します。
REFREPEXCLUDE http://tma2002.homedns.org/*

#集計から除外するファイルを指定します。
FILEEXCLUDE *.css

#リンク元レポートを出力するよう指定します。
REFERRER ON

#ホスト名の検索を行うよう指定します。
DNS WRITE               

#ホスト名検索用DNSキャッシュファイル名
DNSFILE dnsfile.txt     

#DNSキャッシュファイルの有効期限(時間)
DNSGOODHOURS 168        
                                              
主な設定項目は

LOGFILE /var/log/apache/access_log*
Apacheが出力するログファイルの場所を指定しています。
最後に「*」(アスタリスク)をつけているのは、例えば 「access_log.1.gz」
と言った風に、圧縮されているファイルを解凍し、集計対象とするためです。
Logrotate等を導入していて、ローテーションされ、圧縮されたファイルを集計
対象とする場合に便利です。

OUTFILE /var/www/localhost/analog/index.html
集計を行った結果を表示するHTMLファイルの出力先を指定しています。
例では /var/www/localhost/analog/index.html を指定しています。

IMAGEDIR images/
出力されたHTMLファイルにおいて、グラフを表示するために必要なイメージファイルの
入ったディレクトリを指定します。このディレクトリは /var/log/analog/image
にインストールされています。
ここではファイルシステム上のパスではなく、WEBサーバー上でのパスや、
OUTFILEで指定したHTMLファイルからのパスを指定します。
例では、出力されたHTMLファイルと同じ場所に image フォルダをコピーする必要があります。

REFERRER ON
例ではリンク元レポートを出力するよう指定していますが、他にも以下のレポート出力を
指定する事ができます。

GENERAL         全体の概要
YEARLY          年別レポート
QUARTERLY       4半期別レポート
MONTHLY         月別レポート
WEEKLY          週別レポート
DAILYREP        日別レポート
DAILYSUM        曜日別集計
HOURLYREP       時間別レポート
HOURLYSUM       時間別集計
WEEKHOUR        曜日別時間集計
QUARTERREP      15分間隔レポート
QUARTERSUM      15分間隔集計
FIVEREP         5分間隔レポート
FIVESUM         5分間隔集計
HOST            ホストレポート
REDIRHOST       ホストリダイレクションレポート
FAILHOST        ホスト不成功レポート
ORGANISATION    組織レポート
DOMAIN          ドメインレポート
REQUEST         リクエストレポート
DIRECTORY       ディレクトリレポート
FILETYPE        ファイル種類別レポート
SIZE            ファイルサイズレポート
PROCTIME        処理時間レポート
REDIR           リダイレクトレポート
FAILURE         不成功レポート
REFERRER        リンク元レポート
REFSITE         リンク元サイトレポート
SEARCHQUERY     検索語句レポート
SEARCHWORD      検索語レポート
INTSEARCHQUERY  内部検索語句レポート
INTSEARCHWORD   内部検索単語レポート
REDIRREF        リダイレクトされたリンク元URLレポート
FAILREF         不成功リンク元レポート
FULLBROWSER     ブラウザーレポート
BROWSER         ブラウザーの概要
OSREP           OSレポート
VHOST           仮想ホストレポート
REDIRVHOST      仮想ホストリダイレクションレポート
FAILVHOST       仮想ホスト不成功レポート
USER            ユーザレポート
REDIRUSER       ユーザリダイレクションレポート
FAILUSER        不成功ユーザレポート
STATUS          状態コードレポート

検索単語レポートの文字化け

検索単語レポートの日本語が文字化けするため,対策を行います。 http://www.inwonder.net/~dayan/soft.html#analogurldecode を開き、
analogurldecode ベータ版 のリンクをたどると現れるPerlスクリプトをコピーし,ファイルを作成します。
ここでは作成したファイル名を analogurldecode とします。
尚、作成したファイルの改行コードはCRLFではなく、LFとするように注意します。
また、スクリプトの1行目のPerlへのパスが動作させるマシンの環境と同じか確認します。

コピーしたファイルをサーバーへ転送します。ここでは /usr/local/binにおきます。
ファイルに実行権限を与えます。
$ chmod 755 analogurldecode

また、このスクリプトの2行目を見ればわかるように、このスクリプトはJcode.pmを使用します。
インストールされていない場合は、インストールします。
$ emerge dev-perl/Jcode
analogurldecodeを実行します。/var/www/localhost/htdocs/analog.html に出力されている
日本語化前のファイルを日本語化し、/home/httpd/hdoc/analog_jp.html に出力します。
analogurldecode /home/httpd/hdoc/analog.html > /home/httpd/hdoc/analog_jp.html
これで検索語が日本語化されたファイル、analog_jp.htmlが作成されます。

バーチャルホスト運用時のAnalogの設定

バーチャルホストを運用していて、ホストごとにログファイルを分けている場合があります。
こういった場合に各ホストごとにAnalogによる集計結果を出力したいというニーズがあると思います。
この場合は、各ホストごとにAnalogの設定ファイルを作成し、設定ファイルを指定してAnalogを実行します。
以下の例を考えます。

ホスト名Apacheログ出力先
ホストA/var/log/apache2/access_hostA.log
ホストB/var/log/apache2/access_hostB.log

Analogの設定ファイルを二つ用意します。ここでは、 /etc/analog/analog_hostA.cfg と /etc/analog/analog_hostB.cfg とします。
LOGFILEの項目に上記表のログ出力先をそれぞれ指定します。
また、OUTFILEの項目にもそれぞれのホスト毎に設定を行います。
設定後、Analogを実行します。

analog -g/etc/analog/analog_hostA.cfg
analog -g/etc/analog/analog_hostB.cfg

cronによるAnalog起動の自動化

上記バーチャルホストを考慮したAnalogのcronによる実行を設定します。

analog.cronファイルを作成し、/etc/cron.dailyの下に配置します。
尚、各ホストのAnalog設定ファイルにおける OUTFILEの設定は
ホストA は OUTFILE /var/www/localhost/htdocs/report/analog_hostA_src.html
ホストB は OUTFILE /var/www/localhost/htdocs/report/analog_hostB_src.html
とします。
analog.cronの内容は以下の通りです。

#!/bin/sh

#各ホスト毎にAnalog実行
/usr/bin/analog -g/etc/analog/analog_hostA.cfg
/usr/bin/analog -g/etc/analog/analog_hostB.cfg

#HTMLファイル出力ディレクトリに移動
cd  /var/www/localhost/htdocs/report/

#検索語の日本語化
 /usr/local/bin/analogurldecode analog_hostA_src.html > analog_hostA.html
 /usr/local/bin/analogurldecode analog_hostB_src.html > analog_hostB.html 

配置したanalog.cronに実行権限を与えます。
 $ chmod +x /etc/cron.daily/analog.cron
これで毎日Analogの集計が自動的に行われます。
Index
Logrotateによるログのローテーション
AnalogによるWEBアクセス解析
AwstatsによるWEBアクセス解析

このエントリーをはてなブックマークに追加   ツイート