… Apacheログ解析 AWStats Visitors AnalogとReportMagic

neko1sa.gif Apacheログ解析

Redhat系Linuxには、解析ツールのWebalizerというツールがデフォルトでありますけれど、その他にはどんなものがあるのか、有名どこをちょっとだけ試してみました。

Webalizer


webalizers.png
Webalizerは、CentOS5系の場合、デフォルトであれば、ブラウザのアドレス欄に http://localhost/usage/ もしくは http://localhost/usageで表示されるのではないかと思います。また、webalizerの設定ファイルは /etc/の中にあるwebalizer.confになります。
データを置くディレクトリであるusageの場所は私のCentOS5.3では、 /var/www/usage/ となっていますが、もし、わからない場合は、以下のように端末にコマンドを入力する事で探す事が出来ます。


# rpm -ql webalizer | less

上のコマンドの説明を簡単にします。
rpm コマンドは レッドハットパッケージマネージャの事であり、-ql オプションは、クエリー / リストの事です。
つまり、レッドハットパッケージマネージャーに、webalizer がどこにインストールされているのかを、 | (パイプ)で less に流すように指示を出した事になります。
答えは即座に戻りますので、lessコマンドを抜ける時には q キーを叩いて抜けます。

なお、アクセス制御を行う場合には、/etc/httpd/conf.d/webalizer.conf の書き換えを行うようお薦めします。
ちなみに私の場合は内部ネットワークでしかアクセスできないようにしてあります。

サンプル

# This configuration file maps the webalizer log analysis
# results (generated daily) into the URL space. By default
# these results are only accessible from the local host.
#
Alias /usage /var/www/usage

<Location /usage>
Order deny,allow
Deny from all
#Allow from 127.0.0.1
Allow from 192.168.0.    ← この値を自分の環境にあわせて変更します。
Allow from ::1    ← これはIPv6の書式になります。意味は 127.0.0.1 と同じ。
# Allow from .example.com
</Location>




AWStats

このAWStatsもかなり有名なようです。日本語版についてはこちらをどうぞ
awstats_01.png awstats_02.png awstats_03.png awstats_04.png


ただし、MUSTAN(MUlti Sensor Traffic ANalysis)インターネットレポートで安全性を確認してみると、awstats/awstats.pl とか、 cgi-bin/stats/awstats.pl とか、 cgi/awstats/awstats.pl などのレポートが上がっていたことがありますので、ちょっと外で使うには心配かなぁ? という事で、Apacheのログファイルをダウンロードしてきて内部のネットワークで使うことにしました。
インストール方法についてはかなり詳しくweb上で説明されている方たちがたくさんいらっしゃいますので、ここでは省かせてもらいます。

下はインストール時の設定についての簡単な説明を。

200903165.png
httpd.conf の場所を教えろといわれますので、httpd.conf の場所を記述します。
私のCentOS5.3では、/etc/httpd/conf/httpd.conf となります。


200903169.png
ここで使うプロファイルの名前をつけるように指示を出されますので、適当につけます。ここでは hoge と付けました。
このプロファイルは /etc/awstats/ 以下に作成されていました。

2009031612.png
データを更新するには、 awstats.pl のある場所で perl awstats.pl -update -config=hoge とする事と、親切に教えてくれて、 さらに、ブラウザで表示するには、 http://localhost/awstats/awstats.pl?config=hoge(このhogeというのは、今作成したプロファイル名)と入力する事と教えてくれています。


2009031615.png
作成したhogeプロファイルは、種々の設定ができるようになっています。
例えば、ここではログの名前と場所を /home/hoge/Desktop/log/access_log というふうに変更してみました。
つまり、hogeユーザのデスクトップにある logディレクトリの中のaccess_log を解析というように。


2009031616.png
ここではブラウザでの表示方法の変更方法があります。

で、最後に横着者の私の事ですから、何か手抜きを考えますよね・・・当然です♪
まず、いちいち更新するのに awstats.pl のある場所まで移動して、perl awstats.pl -update -config=hoge と入力するのは、 面倒くさいと思いませんか?
cron (クーロン)を設定して・・・という手もありますけど、もっと手っ取り早い方法を考えてみました。
シェルスクリプトを作成し、/usr/local/bin/ とか、/home/ユーザの bin/ の中へでも放り込んでしまったら・・?
と、いう事で、例えば、awstats_up.sh などと適当に、自分がわかるようなファイル名をつけ、中には awstats.pl のある場所からのpathを書き込んでおきます。
私のCentOS5.3では /usr/local/ に作成された awstats/wwwroot/cgi-bin/ の中に awastats.pl がありましたので、以下のように スクリプトに書き込んでおきます。

サンプル

#!bin/bash/
perl /usr/local/awstats/wwwroot/cgi-bin/awastats.pl -update -config=hoge


と、まぁこんな具合に書いて、適当な名前をつけて保存し、アクセス権とプログラムとして実行する権限をふっておきます。
もちろん、プロファイル名と awastats.pl までの情報はそれぞれの環境に合わせて、適確変更して下さいますように。

この実行ファイルを置く場所は、/usr/local/bin/ などの /bin/ に入れておきます。私の場合は、hogeユーザの /home/ に /bin/ を作成して、その中へ放り込んでおきましたが・・・・
ただし、 awstats.pl のある場所は /usr/local/ ですので、 rootユーザでなければ実効できませんから、これを実行するには、やっぱり su コマンドでスイッチする必要がありますので、コマンドを叩く時には、以下のように作成したこのファイルのフルパスを入力する事になりますが。

サンプル(ここでは作成したファイル名を awstats_up.sh としてあります。)

# /home/hoge/bin/awstats_up.sh    ← これで、Enter キーを押します。



awstats_up.png


2009031617.png


なお、Apacheの設定はスクリプトエイリアスというディレクティブで、 /etc/httpd/conf/ の httpd.conf に設定されますので、後で確認したほうがいいかもしれません。


# -----------------------
# ScriptAlias:
# -----------------------

ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"

<Directory "/var/www/cgi-bin">
AllowOverride None
Options ExecCGI FollowSymLinks
Order allow,deny
Allow from all
</Directory>



#
# Directives to allow use of AWStats as a CGI
#
Alias /awstatsclasses "/usr/local/awstats/wwwroot/classes/"
Alias /awstatscss "/usr/local/awstats/wwwroot/css/"
Alias /awstatsicons "/usr/local/awstats/wwwroot/icon/"
ScriptAlias /awstats/ "/usr/local/awstats/wwwroot/cgi-bin/"

#
# This is to permit URL access to scripts/files in AWStats directory.
#
<Directory "/usr/local/awstats/wwwroot">
Options None
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.1 192.168.0  ← この行はアクセス制限のために入力したものです。数値は自分の環境にあわせて変更します。
</Directory>



Visitors

visitors_01.jpg

visitors_02.png



コマンドで操作するだけのシンプルで早いのが評判のVisitorsです。
もちろん、マシンのスペックにもよりますが・・・。





http://www.hping.org/visitors/index_jp.php で visitors-0.7.tar.gz をダウンロードするか、http://www.sfree.sc/fileで、visitors-0.7-JP1.tar.gz をダウンロードし、次にダウンロードしたパッケージをビルドします。


$ tar xvzf visitors-0.7.tar.gz
$ cd visitors_0.7
$ make

次に、インストールをします。
コンパイルしたバイナリは単体で動作するコマンドツールであるため、以下のコマンドでパスの定義された /usr/local/bin 配下にコピーします。

$ cp visitors /usr/local/bin



オンラインマニュアルのインストール
パッケージにはオンラインマニュアルが含まれているので、マニュアルをインストールするには以下のようにコピーします。

# cp visitors1 /usr/share/man/man1p



インストール後、マニュアルが読めることを確認するには、端末上で以下のように入力します。

# man visitors




visitorsの動作確認テスト
以下のコマンドで、visitorsがちゃんと正しい動作をするかどうかのテストを実施します。

# visitors /var/log/httpd/access_log > index.html


index.html が正しく出力されていれば基本的に導入は完了です。


その他の使用方法につきましては、visitors日本語ページ及びドキュメントページを参考にどうぞ。


で、ここでも横着者の私の事ですから、 awstats のところでも使ったような簡単なシェルスクリプトを作っておきまして・・・

サンプル

#!/bin/bash
/home/hoge/bin/visitors -A -m 20 -D -Y /home/hoge/data/apache_log/access.log -o html --trails --prefix http://mrs.suzu841.com > /home/hoge/public_html/visitors_log/index.html


・・・とまぁ、上のように適当に出力方法を書いてファイルには適当な名前をつけて、 hoge ユーザの /home/ の /bin/ に保存。
パーミッションは、rootユーザのみに限定するなら 700 としますが、一般ユーザも使えるようにするなら 755 をふります。
ここでは hoge ユーザを使いましたから 755 をふり、あとはプログラムとして実行する権限を与えます。
/home/hoge/data/apache_log/access.log は /home/hoge/data/apache_log/ の中にある access.log を読みこみ、/home/hoge/public_html/ の中にある visitors_log/index.html に表示してね、ということになります。

後はこの作ったシェルスクリプトを端末上で叩くだけです。
ここでは、一般ユーザの hoge でも実行可能なようになっていますので、suコマンドで rootユーザにスイッチする必要はありませんし~♪