アメリカン・エキスプレス。たとえば、空港からスーツケース無料配送

2008年07月05日

Webalizerでアクセスログを解析する

Webalizerでアクセスログを解析する

 生のログはとても見にくい。見にくいだけじゃなく、いくらがんばって見つめてもアクセスの傾向など見えてこない。だが、 解析ツールを使うとどのページへのアクセスが多いかとか、どこを経由して自分のサイトへアクセスしてきたかといった情報が一目で分る。 その結果をもとにコンテンツを見直せば、アクセスを増すためのヒントになるだろう。

 解析ツールといってもいろいろあるが、 フリーのツールとしてはAnalogWebalizerの2つが有名だ。 この中でapt-getで簡単にインストールできるWebalizerの使い方を見ることにしよう。 Webalizerをインストールするには「apt-get install webalizer」 だけで大丈夫。もし「パッケージwebalizerが見つかりません」と言われたら、 「apt-get update」を実行してからもういちどやりなおす。

# apt-get update
# apt-get install webalizer

Webalizerを実行する

 apt-getでインストールしたWebalizerは特に設定せずとも、コマンドプロンプトで「webalizer」 と打ち込むだけで実行できる。すでに標準的な設定がなされているので、 Apacheのhttpd.confでログやドキュメントのディレクトリを変更していないならそのまま動かせる。
 正常に動くとアクセスログを読み込んで、次のように「××レコードありました」とメッセージが表示される。

# webalizer
Webalizer V2.01-10 (Linux 2.4.27-0vl7) Japanese(EUC)
ログファイル ―  /var/log/httpd/access_log.1 (clf)
作成ディレクトリ: /home/httpd/html/webalizer
ホスト名 ―  'localhost.localdomain'
ヒストリファイルが見つかりません...
以前の実行データが見つかりません...
現在の実行データを保存しています... [02/06/2005 01:58:56]
月別レポート作成 ―  2005年 2月
総合レポートの作成
ヒストリ情報の保存...
67 レコードありました.  処理時間: 0.18 秒
#

Webalizerの解析結果を見る

 Webalizerの解析結果は「/home/httpd/html/webalizer」ディレクトリに出力される。つまり、 httpdのドキュメントディレクトリの中にある「webalizer」というディレクトリだ。ブラウザに 「http://www.mydomain.com/webalizer/」のようにURLを打ち込むと解析結果を見られる。

 項目の概要を見てみよう。ぱっと見ただけでは「ヒット」「ファイル」「ページ」の違いは分からないはず。 それぞれの項目はこんな意味を持っている。よく「ヒット数」という言葉を聞くけれども、実際の解析ではあまり意味を持った数字ではない。 むしろ「ページ」「訪問」あたりが重要になってくる。

 

ヒット サーバーに対するリクエストのすべて。存在しないファイルへの要求や、 ユーザーのキャッシュに入っていて送信はしなかったファイルも含まれる。
ファイル ユーザーからの要求にこたえて実際に送信を行ったファイルの数。ヒットが入力の数とすれば、ファイルは出力の数になる。
ページ ページの数。HTMLファイルのほか、CGIやPHPが生成したページもそれぞれカウントされる。 画像などのファイルは含まない。
訪問 サイトを訪問したユーザーの数。同一IPアドレスからリクエストがあった場合、30分以内であればカウントされない。 30分を超えると新規訪問と見なされる。
サイト いくつのIPアドレスからリクエストを受け取ったか。 異なるユーザーからのアクセスでも同一IPアドレスからであれば1つとしてカウントされる。
キロバイト サイトが送信したデータの総量。ログの中に記録された各ファイルのサイズを合計したもの。

 

Webalizerを設定する

 標準のままでもWebalizerは動いてくれるが、ディレクトリを変更していたり、 集計の方法を変更したいときは設定ファイルを編集する必要がある。Webalizerの設定ファイルは 「/etc/webalizer.conf」だ。設定項目の数はとても多いので、 その中から重要そうなものをピックアップしよう。

LogFile /var/log/httpd/access_log.1
  ログファイルのディレクトリとファイル名を指定する。
  最新のログを解析するならaccess_logを指定する。
OutputDir      /home/httpd/html/webalizer
  Webalizerが出力するファイルの場所を指定する。
  ブラウザで閲覧できる場所にすること。
Incremental     yes
  古い情報を残したまま新しい情報を追加していく。
  「No」にするとログが消えると解析結果も消えてしまう。
PageType        htm*
PageType        cgi
#PageType       phtml
#PageType       php3
#PageType       pl
  上の表にある「ページ」として見なすファイルの拡張子。
  PHPなどを使っているなら該当する拡張子を追加する。
#DNSCache       dns_cache.db
  ログのIPアドレスからホスト名を逆引きするときに、
  DNSデータをキャッシュすることで高速化する。
  Vine LinuxのWebalizerでは逆引きはできない。
#TopSites        30
#TopKSites       10
#TopURLs         30
#TopKURLs        10
#TopReferrers    30
#TopAgents       15
#TopCountries    30
#TopEntry        10
#TopExit         10
#TopSearch       20
#TopUsers        20
  月別ページでの集計結果を何位まで表示するか。
  「0」にするとその項目は表示されなくなる。
#AllSites       no
#AllURLs        no
#AllReferrers   no
#AllAgents      no
#AllSearchStr   no
#AllUsers       no
  各項目についてすべての記録を表示する。
  「yes」にするとそこ項目についての別ページが作られる。
#HideSite       *mrunix.net
#HideSite       localhost
#HideReferrer   mrunix.net/
  集計結果に含めたくないサイトを登録する。
  自分のサイトを指定しておくと集計はされない。
HideURL         *.gif
HideURL         *.GIF
HideURL         *.jpg
HideURL         *.JPG
HideURL         *.png
HideURL         *.PNG
HideURL         *.ra
HideURL         *.zip
HideURL         *.gz
HideURL         *.Z
HideURL         *.tgz
HideURL         *.bz2
HideURL         *.lha
HideURL         *.patch
HideURL         *.diff
HideURL         *.rpm
HideURL         *.deb
  集計結果に含めたくないファイルの拡張子を指定する。
  標準では画像ファイルや書庫ファイルが指定されている。
#GroupReferrer  yahoo.com/      Yahoo!
#GroupReferrer  excite.com/     Excite
#GroupReferrer  infoseek.com/   InfoSeek
#GroupReferrer  webcrawler.com/ WebCrawler
  リンク元のURLを1つのグループとして扱う。
  どの検索エンジンから訪問があったかを見るときに便利。
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    google.co.jp    q=
SearchEngine    yahoo.co.jp     p=
SearchEngine    yahoo.co.jp     q=
SearchEngine    infoseek.co.jp  qt=
SearchEngine    excite.co.jp    search=
SearchEngine    goo.ne.jp       MT=
SearchEngine    msn.co.jp       q=
SearchEngine    search.nifty.com Text=
SearchEngine    biglobe.ne.jp   q=
  リンク元が検索エンジンなら何のキーワードを指定したか。
  太字の部分も追加するといい。

 設定項目の中で「DNSCache」というのがあるが、コメントを外して有効にしてもエラーが出る。 Webalizerにはアクセスログの中にあるIPアドレスからホスト名を逆引きする機能があるが、Vine Linuxのapt-getでインストールされるWebalizerではこの機能が無効になっている。つまり、 IPアドレスのままでしか集計結果が表示されないわけだ。
 これを解決するには、httpd.confの中にある「HostnameLookups」の項目を「on」に変更し、 ホスト名の形でアクセスログを記録すればいい。 アクセスが多いサイトではアクセスがあるたびに逆引きが行われるのでサーバーに負荷がかかるが、 よほどの人気サイトでもない限り問題はないと思う。
 また、Webalizerのソースを入手し、DNSの逆引きを有効にしてコンパイルするという手もある。 configureにenable-dnsというオプションを追加すればいい。こちらのサイトからWebalizerの最新のソースを入手し、 次のようにしてコンパイルする。

$ tar zxfv webalizer-2.01-10-src.tgz
$ cd webaizer-2.01-10
$ ./configure --with-language=japanese --enable-dns
$ make
$ su -
# make install

過去のログをすべて解析する

 /etc/webalizer.confを編集したら、 いったん/home/httpd/html/webalizerに出力された集計結果のファイルをすべて削除し、新たに集計をやりなおす。 そのとき、古いログも残っていたらそれもすべて解析にかけるといい。
 アクセスログは毎週新しいファイルが作成され、古いファイルは名前を変えて過去4週分が保存されている(1つのファイルに記録する期間と、 保存する古いファイルの個数は/etc/logrotate.confで変更できる)。lsコマンドでログのディレクトリ (/var/log/httpd)を確認してみよう。

$ ls -l /var/log/httpd
合計 13492
-rw-r--r--    1 root     root       509767 Feb 10 01:28 access_log
-rw-r--r--    1 root     root      1085700 Feb  6 03:59 access_log.1
-rw-r--r--    1 root     root       867948 Jan 30 03:57 access_log.2
-rw-r--r--    1 root     root       985214 Jan 23 03:22 access_log.3
-rw-r--r--    1 root     root      1400689 Jan 19 23:35 access_log.4
-rw-r--r--    1 root     root        29393 Feb 10 01:27 error_log
-rw-r--r--    1 root     root       115741 Feb  6 04:02 error_log.1
-rw-r--r--    1 root     root       220857 Jan 30 04:02 error_log.2
-rw-r--r--    1 root     root       100044 Jan 23 11:31 error_log.3
-rw-r--r--    1 root     root        89497 Jan 19 23:35 error_log.4
-rw-r--r--    1 root     root            0 Feb  6 04:02 ssl_request_log
-rw-r--r--    1 root     root         6526 Jan 30 23:09 ssl_request_log.1
-rw-r--r--    1 root     root            0 Jan 23 04:02 ssl_request_log.2
-rw-r--r--    1 root     root            0 Jan 19 23:35 ssl_request_log.3
-rw-r--r--    1 root     root            0 Jan 19 23:35 ssl_request_log.4
$

 access_logというのが最新のアクセスログで、××.1、××.2、××.3の順に古くなっていく。 この過去のログをWebalizerへ古い方から順番に読み込ませるといい。これでログに残っている分はすべて集計することができる。

# webalizer /var/log/httpd/access_log.4
# webalizer /var/log/httpd/access_log.3
# webalizer /var/log/httpd/access_log.2
# webalizer /var/log/httpd/access_log.1
# webalizer /var/log/httpd/access_log

 次に/etc/webalizer.confの「LogFile」の設定を「access_log」に変えておく。 すると次からただ「webalizer」と打ち込むだけで、ログの新しい部分だけが集計結果に追加されていく。 手動で設定するのも面倒なのでcronで自動実行するようにしておけばいいだろう。
 cronで自動実行させるには「/etc/crontab」に記述を追加する。 新しいログの作成は毎週日曜日の午前4時22分に行うように設定されているため、 毎日実行する場合でも午前4時22分の直前にログ解析を行うように指定すべき。午前6時なんて時間を指定すると、 毎週日曜日のデータがごっそり解析の対象から抜け落ちてしまう。 下の例では毎日午前4時20分にWebalizerを実行するように指定している。

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
20 4 * * * root run-parts /usr/bin/webalizer

複数サイトを運営しているときは

 一台のサーバーで複数のドメイン(もしくはサブドメイン)を動かしていて、それぞれ別にアクセスログをとっている場合は、 それぞれのアクセスログに対してWebalizerを実行すればいい。たとえば、「www.mydomain.com」のほかに 「red.mydomain.com」「blue.mydomain.com」という2つのドメインがあったと仮定しよう。

  1. Webalizerの設定ファイルである/etc/webalizer.confをコピーして、 /etc/webalizer_red.conf/etc/webalizer_blue.confといったファイルを作成する。
  2. それぞれの設定ファイルをviで開いて、アクセスログと集計結果出力先のディレクトリを指定する。
  3. 新しく作った設定ファイルをWebalizerに読み込ませる。webalizer -c /etc/webalizer_red.confwebalizer -c /etc/webalizer_blue.confのようにする。
  4. 手動で実行するのは面倒なので、上のコマンドを/etc/crontabに追加する。 同時に実行するとトラブルの元なので2〜3分ずつずらして指定するといい。
posted by LinuxDK at 01:14| 千葉 ☀| Comment(0) | TrackBack(0) | サーバプログラム関連 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.seesaa.jp/tb/102175095

この記事へのトラックバック
にほんブログ村 その他趣味ブログ アマチュア無線へ
にほんブログ村
にほんブログ村 バイクブログ カワサキへ にほんブログ村 IT技術ブログへ
食べログ グルメブログランキング banner_03[1].gif
押していただけると喜びます

長期間、樽でじ〜っくり熟成!【幻のプレミア麦焼酎】

×

この広告は1年以上新しい記事の投稿がないブログに表示されております。