AWStats

ウェブサーバのアクセス解析というと大きく二つに分けられると思います。ひとつは各HTMLに埋め込んで動的に情報を収集するもの、もうひとつはApacheのログから情報を解析するものです。

前者としては代表的なものとしてGoogle Analyticsがあげられると思います。実際Google Analyticsも使っていますが、すべてのウェブページの情報を解析するのには向いていないと思うので、ログを解析するタイプのアクセス解析としてAWStatsをインストールしました。

他に定番なソフトとしてWebalyzerがあるかと思いますが、見た目がよくできているのと完全日本語版というのが気になったのでAWStatsをインストールしてみました。オフィシャルサイトは以下の場所です。

完全日本語版は以下のサイトにあります。

インストールは上記の完全日本語版のサイトにしたがって行いましたが非常に簡単です。ウェブからアクセスできる場所に展開したファイルを配置し、設定を行い、実行するという流れです。

上記サイトにありますが、ウェブからアクセスできるというのはcgi-binとiconのディレクトリが見れれば十分なようなので、適当なところにおいて、そこだけApacheの設定にAliasを追加する感じになるかと思います。

設定もとくに問題になるところはなく、ほとんどデフォルトでも十分な出力が得られると思います。

一番なやむのが運用方法ではないでしょうか。AWStatsの処理はログからデータをアップデートする処理とデータを表示する処理に分けられます。アップデートは定期的に行い、表示はウェブからのアクセスに基づいて行うということになります。おそらく表示の部分は特に考える余地はなくCGIが実行されると表示されると言うことになります。

トップページだけはデータをアップデートしたときに静的にHTMLを生成しておくと負荷が削減できるようです。

そのデータのアップデートの処理ですが、定期的にアップデート処理を起動すると、前回からの差分を更新する仕組みのようです。処理済の部分のログを削除することが可能で次回以降の処理が軽くできるという思想のようですが、ログを処理したら削除というのはポリシーとしては受け入れがたいものがあります。

また、前回処理からの差分を処理ということでlogrotateとは相性がよくありません。(通常の定期的な処理のほかにlogroate直前の処理というのをはさむ必要がでてきます。)

完全日本語版ではログからデートする前に一旦フィルターをかけてファイルを変換するという処理が追加されるという方式です。定期的にチェックする処理が二重になるのと、ファイルの変換という処理が入るのとで、効率よく処理するためには処理済のログは削除というポリシーにいっそう依存するような構成になります。

今回はそんなにリアルタイムにログを解析したいわけではない個人サイトということで、大きく割り切ってログのアップデートは週に1回だけ行うことにしました。logrotateが終わってるであろう時間に、最後にローテートされたログに対して処理を行います。この場合ファイル内に追加されたログがある場合はありませんので、処理済のログを削除しなくても無駄なく処理が可能です。このときにあわせてHTMLのページも生成します。

具体的な設定としては、まず/var/www/awstats/以下にファイルを配置し、Apacheの設定に以下を追加しました。実際にはこれに加えてベーシック認証の設定もあります。

次にawstats.confは以下のようにログファイルを設定、SiteDomainやHostAliasesも適当に設定しました。

更新には以下のようなスクリプトを作成し、日曜日の朝に実行するようにcronに設定しました。