Webalizerインストール

ApacheのログはWebサイトのアクセス増加対策などに役に立ちますが、テキストベースで見た目にわかりにく管理者の手間が増えます。
高機能なアクセス解析では シビラ UNFINISHED ACR WEB となどインストールの手間のいらないものもありますが、ここでは、 ログを解析しグラフィカルに表示することの出来るフリーソフトWebalizerのインストール方法について説明をします。

その他のWebログのアクセス解析にはAWstatsというものもあります。
AWstatsのインストールは AWstatsインストール を参照ください。

# より詳しいアクセス解析を求めるなら有償になりますがシビラ をお勧めします。
# 現在30日間無料試用キャンペーン実施中です。

はじめに

ログを解析するにあたり、Apacheのログ形式をより詳細なものへ出力するように変更が必要となります。
デフォルトでは、common形式 になっていますので combined形式 へ変更をします。

CustomLog /usr/local/apache/logs/access_log common
                       ↓変更
CustomLog /usr/local/apache/logs/access_log combined

この変更をすることでaccess_logにREFERER,エージェントなどの値もとることが出来るようになります。もちろん、Apacheの再起動を忘れずに。。。

詳しいログ形式はhttpd.confのログの定義にありますので httpd.conf解説 を参照ください。

ソースの入手

以下のURLから最新のソースを入手してください。
http://www.mrunix.net/webalizer/
今回はwebalizer-2.01-10-src.tgzをダウンロードしました。
ftp://ftp.mrunix.net/pub/webalizer/webalizer-2.01-10-src.tgz

インストール

ここではwebalizer-2.01-10-src.tgzをダウンロードしたものとして説明します。
インストールするにあたりGDのソース一式が必要になります。
私の環境では、GDライブラリはRPMで入っていましたのですんなりインストールできました。入っていなければ別途インストールしてください。

$ tar xvfz webalizer-2.01-10-src.tgz
$ cd webalizer-2.01-10
$ ./configure  --prefix=/usr/local/webalizer \
               --with-language=japanese \
               --enable-dns \
               --with-db=/usr/include/db1
$ make
$ su
# make install

コンパイルオプションは以下の通りです。
--with-language 日本語表示
--enable-dns はIPアドレスをホスト名に変換するためのオプション
--with-db=/usr/include/db1 上記機能を利用するためにDNS機能を使うためにはバークレイDBライブラリを指定します。

これで/usr/local/webalizer/bin/webalizerがインストールされます。

設定ファイルの準備

展開したディレクトリ内の設定ファイル(sample.conf)をコピーして編集しましょう。
ここでは、/usr/local/webalizer/conf 以下に設定ファイルをコピーしましたが必要に応じて場所を変更してください。

# mkdir /usr/local/webalizer/conf
# cp sample.conf /usr/local/webalizer/conf/webalizer.conf

また、webalizerの出力先のディレクトリも用意します。
ここでは、/home/hoge/public_html/webalizer を作成しますが、環境に応じて作成してください。

# mkdir /home/hoge/public_html/webalizer

設定ファイル(webalizer.conf)の編集

設定ファイルwebalizer.confを編集します。
修正箇所は以下の通りです。

ログの場所の定義
apacheのログの場所を定義します。

LogFile        /usr/local/apache/log/access_log

webalizerの出力先の定義
出力をするディレクトリの指定をします。

OutputDir      /home/hoge/public_html/webalizer

差分の集計方法を有効にする
apacheのログを毎回全て出力対象とすると時間もかかります。前回、検索した続きのみを出力対象とする為に定義をします。

Incremental   yes

ドメイン名の定義
動作しているサーバのURL(ドメイン名)を指定します。

HostName       www.example.jp

結果として出力するタイプの定義
基本的にhtmlファイルなどのページをカウントするようにします。全てのファイルを対象とする場合は*で指定してもよいでしょう。

PageType      htm*
PageType      cgi
PageType      shtml
PageType      php

DNSキャッシュファイルの出力の定義
apacheのログで出力されているIPアドレスをHOSTネームに変換する為にDNSキャッシュファイルを出力する設定となります。

DNSCache      dns_cache.db

DNSキャッシュプロセス数
DNSキャッシュのプロセス数を指定します。1~100まで設定が出来るようですが5~10程度で十分だそうです。

DNSChildren   10

出力ファイルのヘッダ情報の定義
検索文字列を表示するためにUTF-8として出力することも可能ですが私はeucとして表示するスクリプトを利用しますのでeucとして表示を定義します。

HTMLPre <meta http-equiv="content-type" content="text/html; charset=euc-jp">
HTMLHead <meta http-equiv="content-type" content="text/html; charset=euc-jp">

除外リファラーの定義 (2004/5/24追加)
実際にログを集計してみるとリファラーの結果のほとんどが自サイトからのアクセスが記録されてしまいます。自サイトからのアクセスは除外する設定をしておきましょう。

HideReferrer    www.example.com

除外ファイルタイプの定義 (2004/5/24追加)
アクセスのカウントとして除外したファイルなどあれば定義します。例えばcssファイルなどがそれにあたります。

HideURL         *.css

検索エンジンの定義
HPの訪問者がどのような文字列で検索したかをリファラーから集計する為に、デフォルトで定義されている検索エンジンと日本で有名な検索エンジンも追加します。

SearchEngine yahoo.com       p=
SearchEngine altavista.com   q=
SearchEngine google.com      q=
SearchEngine eureka.com      q=
SearchEngine lycos.com       query=
SearchEngine hotbot.com      MT=
SearchEngine msn.com         MT=
SearchEngine infoseek.com    qt=
SearchEngine webcrawler      searchText=
SearchEngine excite          search=
SearchEngine netscape.com    search=
SearchEngine mamma.com       query=
SearchEngine alltheweb.com   query=
SearchEngine northernlight.com  qr=
SearchEngine  infoseek.co.jp  qt=
SearchEngine  excite.co.jp    search=
SearchEngine  yahoo.co.jp     p=
SearchEngine  yahoo.co.jp     q=
SearchEngine  google.co.jp    q=
SearchEngine  goo.ne.jp       MT=
SearchEngine  biglobe.ne.jp   q=
SearchEngine  msn.co.jp       q=

以上が修正内容となります。

解析結果を出力

webalizerを実行するには以下のコマンドを実行することで出力できます。
【書式】
# /usr/local/webalizer/bin/webalizer -c 設定ファイル

# /usr/local/webalizer/bin/webalizer -c \
  /usr/local/webalizer/conf/webalizer.conf

定期的に集計するためにcrontabで1時間に一回程度、上記コマンドを実行しましょう。

しかし、出力結果で、検索文字列が文字化けしてしまう症状になってしまいませんか?
解消方法は事項で詳しく解説します。

検索文字列の文字化け対策(1)

ほとんどの検索エンジンでの検索文字列はUTF-8になっているため、文字化けが発生してしまいます。ここでは、出力されたファイルをUTF-8からeucに変更するスクリプトを作成します。

まず、/usr/local/webalizer/bin以下にdecode.plを以下のように作成します。
# Jcode.pmが必要となります。入っていなければCPANからダウンロードして導入してください。

#!/usr/local/bin/perl

use Jcode;

open (IN ,$ARGV[0]);
while (<IN>){
        $_ =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
        Jcode::convert(\$_,euc);
        print $_;
}
close (IN);
exit;

作成したスクリプトに実行権限を与え、以下のように実行します。

# /usr/local/webalizer/bin/decode.pl 変更するhtmlファイル > 出力先のファイル

とすればeucへ変更されます。

私は、いちいち面倒なので以下のようなスクリプトを作成しました。
よかったら利用してみてください。/usr/local/bin/webalizer/bin以下にwebalizer.plとして保存しました。

#!/usr/local/bin/perl

# 設定ファイル場所
$conf = '/usr/local/webalizer/conf/webalizer.conf';
# decode.plの設置場所
$decode = '/usr/local/webalizer/bin/decode.pl';
# 解析結果の出力先
$outdir = '/home/hoge/public_html/webalizer';

`/usr/local/webalizer/bin/webalizer -c $conf`;

@htmls = <$outdir/*.html>;
foreach (@htmls) {
    $filename=$_;
    `$decode $filename > $filename.euc`;
    `mv $filename.euc $filename`;
}

exit;

このスクリプトをcronで定期的に実行することで文字化け問題も解消し、eucで出力されるようになります。

検索文字列の文字化け対策(2) (2005/1/26追加)

文字化け対策をWebalizerだけで完結するようにパッチを公開されている方もみえます。

webalizerの検索語の日本語対応の話
http://tyche.pu-toyama.ac.jp/~a-urasim/webalizer/

試しに適用したところ問題なく文字化け対策はできました。
こっちの方がスマートで、おすすめです。

当サイトの2004年4月の出力結果はこちら
# Basic認証がかかっていますが、ユーザ/パスワード共にguestでログインできます。

これでwebalizerのインストールは完了です。

marronおすすめの参考書 by Amazon
アクセスログ解析の教科書 アクセスログ解析の教科書
翔泳社 / (有) いなかどっとコム, 石井 研二
¥ 2,310
SEO効果を倍増させるアクセスログ解析の極意 SEO効果を倍増させるアクセスログ解析の極意
秀和システム / 石井 研二
¥ 1,680
Analog―Webアクセスログの高速解析ソフト Analog―Webアクセスログの高速解析ソフト
九天社 / 松木 孝幸, 太田 俊哉, 高橋 基信

Copyright(C) 2004-2006 マロンくん.NET ~サーバ管理者への道~ All Rights. Reserved.