Analog によるアクセスログ解析

2003-3-8 00:00
このエントリーをはてなブックマークに追加

このページで紹介しているツールは現在はメンテナンスされていません。代替ツールの利用に当たっては注意してください。

独自サーバを立て WWW サーバを運用してる方は、アクセスログも採っていると思います。アクセスログはテキスト形式ですので、ビューアで見ても良いのですが、統計処理を手作業で行なうのは大変です。Analog というツールは、アクセスログの解析と統計処理を、高速に行なってくれます。以下、Redhat Linux 7.x (Apache 1.3.x) 用で Analog を導入した際の方法を簡単に書いておきます。

インストール

>Analog の公式サイト (現在はリンク切れ)より RPM パッケージをダウンロードします。筆者が試したのは、バージョン5.3.1 の Intel 版です。

  # wget http://www.iddl.vt.edu/~jackie/analog/analog-5.31-1.i386.rpm
  # rpm -K --nogpg analog-5.31-1.i386.rpm
  # rpm -Uvh analog-5.31-1.i386.rpm

analog.cfg の編集

/etc/analog.cfg ファイルで、解析のオプションを指定できます。ただし、デフォルトでインストールされる /etc/analog.cfg はあまり参考にならないので、 /usr/share/doc/analog-5.31/examples/big.cfg を /etc/analog.cfg にコピーして、これを編集して利用します。

ログのフォーマットとファイル名を設定します。httpd.conf で設定されているログの形式を指定します。ログファイルは、* で指定することも可能ですので、ローテーションさせている場合は便利です。また、複数行の記述で、いくつかのログファイルを指定することもできます。バージョン 5.3.1 では、圧縮ファイルもそのまま読み込めます。

  LOGFORMAT combined
  LOGFILE /var/log/httpd/access_log
  LOGFILE /var/log/httpd/access_log.*

HOSTNAME には、サイト名を記述します。漢字コードは後述の LANGUAGE と同じものを指定してください。

  HOSTNAME "サイト名"
  HOSTURL http://mysite.example.jp/

レポートの出力ファイルを絶対パスで指定します。ファイル名はここでは report.html としますが、何でも構いません。

  OUTFILE /var/www/html/report.html

言語を指定します。レスポンスヘッダでの文字コード指定に合わせて、JAPANESE-SJIS, JAPANESE-JIS, JAPANESE-EUC のいずれかを指定しましょう。

  LANGUAGE JAPANESE-EUC

解析の実行

では、アクセスログを解析してみます。出力先のディレクトリにファイルを書き込める権限があれば、どのユーザで実行しても構いません。

  $ analog

警告 (Warning) が出ることもありますが、ともかく、report.html が出力できていれば OK です。出力に失敗した場合は、ディレクトリが存在するか、またアクセス権があるか確認しましょう。

出力された report.html をブラウザでアクセスしてみましょう。円グラフや棒グラフが使われた解析結果が表示されるはずです。一部検索単語が文字化している場合がありますが、後述の方法で回避できます。

ファイルの出力先を変更した場合、画像がうまく表示されないときは、 /var/www/html/images/ にある画像ファイルを適切な場所に移動しましょう。

DNS の設定

初期状態では、ドメインレポート、組織レポートが、IP アドレスでの統計となっています。この IP アドレスをドメインに変換するには、DNS の設定が必要になります。サーバで DNS サーバが実行されている必要はありませんが、DNS を利用できる環境が必要です。

  DNSFILE /var/cache/analog/dnscache
  DNSLOCKFILE /tmp/dnslock
  DNS WRITE

このように指定して、Analog を再度実行してみましょう。DNS の設定前に比べると、とてつもなく時間がかかりますが、我慢しましょう。解析結果は IP アドレスでなく、ドメインで分類されているので、見やすいと思います。二回目以降はキャッシュが有効になるので、そこそこ早くなります。もしキャッシュファイルの作成に失敗する場合は、ディレクトリのアクセス権を確認してください。

検索単語の文字化けを回避する

さて、検索単語レポートが文字化けしているかと思います。これは、ログファイルに含まれる検索単語の文字コードが、統一されていないためです。これを回避するために、あらかじめログファイル内の検索単語部分のコードを変換、統一します。

変換には、logkf というヘルパーアプリケーションを利用します。試したバージョンは 1.0beta2 (本家から落とせなくなったので転載) です。サーバにダウンロードして解凍します。

  $ wget https://futuremix.org/downloads/logkf-1.0beta2.tar.gz
  $ tar xzvf logkf-1.0beta2.tar.gz

解凍したディレクトリに移動して、make を実行します。

  $ make

コンパイルされた logkf というファイルが出来ますので、パスの通ったディレクトリ (/usr/local/bin など) にコピーします。次に、logkf を実行します。次の例では、文字コードを EUC に統一し、/tmp に出力します。もちろん文字コードは、Analog.cfg での文字コード指定と揃える必要があります。

  $ logkf -e /var/log/httpd/access_log > /tmp/access_log

この出力されたファイルを Analog の解析対象にすれば、検索単語が文字化けしないようになります。

更なるオプション指定

画像を GIF 形式ではなく、PNG 形式にしたい場合は、次のように指定します。

  PNGIMAGES ON
  LOGO analogo.png

特定のファイルを除外したい場合は、EXCLUDEFILE で、ファイル名のパターンを指定します。たとえば、画像を含まないようにする場合は、次のように指定します。

  EXCLUDEFILE /images/*.*

どのページからリンクされているのか、といった情報を出力するには、リファラーの統計を ON にします。REFERER はリンク元の URI を、REFSITE は、その URI をサイト毎(ドメイン毎)にまとめた結果を出力します。リンク元から自サイトを除外するための指定も付け加えておきます。

  REFERRER ON
  REFSITE ON
  REFREPEXCLUDE http://mysite.example.jp/*
  REFSITEEXCLUDE http://mysite.example.jp/

ドメインレポートで、.jpne.jpocn.ne.jp の様に、
階層構造で出力させるには、次の設定を行ないます。

  SUBDOMAIN *.*.*

また、設定ファイルを複数用意して、切り替えることも出来ます。
次のように実行時の引数に -G, +g, および設定ファイルのパスを指定します。
+gに続けて空白を入れずにファイルパスを指定するのがポイントです。

  $ analog -G +g/etc/analog_hoge.cfg

上記以外にも、Analog のオプションはたくさんありますので、色々試してみると面白いでしょう。

なお、私の環境では、初期設定のままでは、Analog 実行時に、次のような警告が出てしまいます。

  $ analog -G +g/etc/analog_hoge.cfg
  analog: analog version 5.31/Unix
  analog: Warning D: In Browser Summary, SORTBY (requests) doesn't match SUBSORTBY (pages)
  (For help on all errors and warnings, see docs/errors.html)
  analog: Warning D: In Browser Summary, SUBSORTBY (pages) isn't included in COLS

一つ目は、ブラウザの統計の設定で、ソートキーが REQUESTS なのに、サブソートキーが PAGES であるという警告のようです。二つ目は、サーブソートキーが PAGES にもかかわらず、カラムの中に PAGES が含まれていないという警告です。このメッセージが出ないようにするには、設定ファイルで次の設定を追加します。

  BROWSUMCOLS RP
  SUBBROWSORTBY REQUESTS

自動実行

どうせなら、Analog を1日1回なり、週に1度なり、自動実行させるようにしてみましょう。これには crond を動作させる必要があります。cron の設定ファイルを編集します。

  # crontab -e

としてエディタを起動させて、新しい行に cron の設定を追加します。その際に、cron の環境変数も忘れずに設定しましょう。次の例は、毎日午前4時00分に Analog を実行します。

  SHELL=/bin/bash
  PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
  MAILTO=root
  HOME=/

  0 4 * * * analog

また次の例は、毎週日曜日の 午前3時に logkf を実行し、午前3時15分に analog_hoge.cfg の設定に従って統計を出力させます。

  0 3 * * sun logkf -e /var/log/httpd/access_log > /tmp/access_log
  15 3 * * sun analog -G +g/etc/analog_hoge.cfg

3 Comments

  1. アクセスログの解析

    自宅のサーバでWebサイトを公開しているとやっぱりアクセルログの状況が気になるものです。 今まで簡単なcgiで解析をしていましたがもう少し細かい解析情報がほしいのでこの際、analogというソフトを導入しました。 自分のためにインストールログを残しておきます。……

    トラックバック by Zakimi::Blog2004-02-20 22:53

  2. Analogを使ったアクセスログ解析を検討しています。

    以下のアドレスにあるApacheLogViewerにより生ログを解析をしたのですが、
    http://home.ns01.info/circle/
    一部ドメイン名が取得できないIPがあります。

    それらのIPがどういったアクセス元であるかを知りたいので、
    以下のようなサイトで一つ一つ検索して集計しているのですが、
    http://whois.ansi.co.jp/
    Analogを使うことでこうした問題を解決できるものでしょうか。

    最終的には日本語に対応した文字コードによる
    アクセス元とページビューが一覧できるかたちに
    出力できたらと考えております。

    ご存知でしたらご回答の程、よろしくお願いいたします。

    コメント by frills — 2004-10-19 16:56

  3. Fedora coreへのanalogの導入

    mild2.jpサーバーにログ整形ツールの一種である analog を導入してみ…

    トラックバック by 一語/一区2004-10-21 20:11

Sorry, the comment form is closed at this time.

34 queries. HTML convert time: 3.294 sec. Powered by WordPress. Valid XHTML
Copyright © 2003-2017 @ futuremix.org ログイン