TOTAL:3474, TODAY:438

WebdruidでApache2のログ解析

以前から玄箱に導入したいと思っていたソフトの一つに、Apache2のログ解析ができるWebdruidがありました。先日、とうとう導入しましたので、その紹介です。Apacheのログ解析としてはWebalizerが有名ですが、玄箱の多くの先輩方が導入して実績もあり、URLのアクセス遷移をグラフィカルに図示してくれるWebdruidにしました。参考にしたサイトは次の通りです。

導入する前にいろいろ調べていたら、どうやら文字化けするみたいなので、コンパイルからやろかな?と思いましたが、とりあえず、簡単なaptitudeでインストールしました。次のように、graphvizも一緒にインストールします。これは、グラフ表示をするために必要みたいです。

# aptitude update
# aptitude search webdruid
# aptitide search graphviz
# aptitude install webdruid graphviz

設定ファイルは、/etc/webdruid/webdruid.confにあるので、これを編集します。まず、動作確認をするために、次の箇所を変更します。

#LogFile        /var/lib/httpd/logs/access_log
LogFile        /var/log/apache2/access.log.1   <- 解析するログファイル

#OutputDir      /var/lib/httpd/htdocs/usage
OutputDir      /mnt/www/webdruid               <- 出力する場所

ログファイルは最新ではなく、一つ前のものにしておきます。出力結果はhtmlファイルとして出力されるのでhttpアクセス可能なディレクトリに置きます。私の場合、Apacheのトップディレクトリの下に専用のディレクトリ/mnt/www/webdruidを作りました。この後、次のようにコマンドで打てば、ログ解析結果ができます。

# webdruid

その後、上で設定したディレクトリ(私の場合、http://玄箱のアドレス/webdruid/)にアクセスすれば、次のようなログ結果をグラフ等で見ることができます。

上の図は、文字化けしていない部分ですが、多くの部分が文字化けしているので、大阪てきとー日記さん同様、locale設定を外します。

# cd /usr/share/locale/ja/LC_MESSAGES/
# mv webdruid.mo webdruid.mo.org

これにより、グラフのタイトルなどが英語になりますが、まあ、グラフを見れば何のグラフか分かるので、ほとんど問題ないです。また、Googl等の検索キーワードはしっかり日本語になっているので、実害はありません(といいながら、ソースからコンパイルして完全に日本語にする方法もやってみました。最後に書きましたが、結果はたどり着けず放置です)。

Webdruidのカスタマイズ

デフォルトの設定だと、自分自身によるアクセスや、検索ロボットによるアクセスも解析されるので、それらをできるだけカウントしないようにします。また、自サイトにアクセスしてきたドメインをIPアドレスではなく、ドメイン名で表示できるようにします。

#NSCache        dns_cache.db
NSCache        dns_cache.db    <- DNSを逆引きのキャッシュ

#DNSChildren     0
DNSChildren     5              <- DNSの逆引きするプロセス数

HideReferrer    www.arakin.dyndns.org   <- 自サイトからの参照を非表示

IgnoreSite      192.168.1.*    <- ローカルサイトからのアクセスを無視
IgnoreURL       /hoge.css      <- スタイルシートへのアクセスを無視
IgnoreURL       /robots.txt    <- Googlebotからのアクセスを無視

ここで、"Hide"というキーワードの場合、グラフ表示の中の「Top 30 .....」みたいな表示にはカウントされませんが、Total Hitsにはカウントされます。"Ignore"だと完全に無視されるようです。上記のような設定でも、まだ検索ロボットによるクロールは完全に削除できません。そのため、ヒット数や訪問数については、大体の傾向が分かる程度です。

cronによる日々の更新

統計情報が日々更新されるように、再度、/etc/webdruid/webdruid.confを編集します。

#Incremental    no
Incremental yes

上記のようにすることで、差分情報だけが追加されていきます。せっかくなので、これまでの古いログもすべて解析することにします。私の環境では、ログは/var/log/apache2に出力され、古いログファイルは、access.log.1, access.log.2.gz, ....となっているので、コマンドラインで次のようにタイプします。

# cd /var/log/apache2
# webdruid access.log.*.gz

webdruidは引数にログファイルを与えると、そのファイルとwebdruid.conf記載されたファイルを解析します。後は、更新間隔の設定です。Apache2がログをローティトする間隔を変更します。デフォルトでは1週間ですが、毎日にします。/etc/logrotate.d/apache2を次のように編集します。
ローティトの間隔を1週間から1日変更したので、「Googleサイトマップの設定」で説明した、config.xmlでチェックするログファイルを15日分に変更しました。Googleサイトマップを設定している方はお忘れなく。

/var/log/apache2/*.log {
        daily      <-- dailyに変更
        missingok
        rotate 365 <-- 1年分のログ
        compress
        delaycompress
        notifempty
        create 640 root adm
        sharedscripts
        postrotate
        if [ -f /var/run/apache2.pid ]; then
                /etc/init.d/apache2 restart > /dev/null
        fi
        endscript
}

最後に、cronにより、毎日Webdruidを実行するようにします。これは、/etc/crontabで編集します。私の環境では、ログローティト自体も/etc/cron.daily/logrotateとして、毎日6:25に実施されるので、少し後の7:05に設定しました。

# m h dom mon dow user  command
#17 *   * * *   root    run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || run-parts --report\
/etc/cron.daily
47 6    * * 7   root    test -x /usr/sbin/anacron || run-parts --report\
/etc/cron.weekly
52 6    1 * *   root    test -x /usr/sbin/anacron || run-parts --report\
/etc/cron.monthly
5 7     * * *   root    /usr/bin/webdruid

これで終わりでしたが、次の日、postmaster宛てに/usr/bin/webdruidさんから次のようなメールが来ていました。

Using logfile /var/log/apache2/access.log.1 (clf)
This is The WebDruid 0.5.4
Copyright (C) 2003-2004 Fabien Chevalier

DNS Lookup (5): 149 addresses in 33.35 seconds, 4/sec
Using DNS cache file dns_cache.db
Loading search engines list...
Cannot convert search phrase from ANSI_X3.4-1968 character set.
Either the web browser was wrong or this system's default locale doesn't 
reflect this browser default.
You might wish to tweak the current locale.
Cannot convert search phrase from ANSI_X3.4-1968 character set.
Either the web browser was wrong or this system's default locale doesn't
reflect this browser default.
   :    :    :   :

どうやらlocaleが完全ではないようですが、新しく追加されたhttp://玄箱のアドレス/webdruidにアクセスしましたが、特に問題はないようです。一応、/usr/share/webdruid/engines.listを見ましたが、どこが問題かも分かりませんでした。ということで、ちょっと気持ち悪かったので、ソースからコンパイルして完全に日本語にしようと思いました。しかし、結局、途中で面倒になって放置です。最近、aptitudeで甘えているので、辛抱が足らなくなってきたのかもしれません。残りは、放置になるまでの記録です。

Webdruidを完全に日本語に。。。しかし

Webdruidのソースは、shionさんのWiKiのところで紹介されていた、SOFTPEDIAから0.5.4版をダウンロードし、展開しました。

# bunzip2 webdruid-0.5.4.tar.bz2
# tar xvf webdruid-0.5.4.tar

そして、htmlの漢字コードを設定しているwebdruid-0.5.4/po/ja.poを次のように編集しました。

 "Content-Type: text/plain; charset=UTF-8\n"

この後、./configureをしたのですが、次のようにlibpngがないと怒られました。

# cd webdruid-0.5.4
# ./configure --enable-dns
checking for gcc... gcc
    :   : 途中略 :   :
checking for main in -lpng... no
configure: error: png library not found... please install png.
#

「しゃーないなー。」と思いながら、aptitudeで開発用のlibpngをインストールし、気を取り直して、./configureをすると、今度はフォントがないと怒られました。

# aptitude search png
# aptitude install libpng3 libpng3-dev
# ./configure --enable-dns
    :   : 途中略 :   :
checking for FT_Init_FreeType in -lfreetype... no
configure: error: Freetype 2 library not found... please install it!
#

いくら、"please install"でも2回連続は駄目ですね。aptitudeでうまくいってなかったら、頑張ったんでしょうが、問題なく動いてそうなので、この辺でやめてしまいました。

最新の7件

OpenGL

電子工作

玄箱HG

ホームページ

日記

Copyright (C) 2007 Arakin , All rights reserved.