便利ツール(9)アクセスログ解析ソフト「ApacheLogViewer」
今回紹介するソフトは、Apache のアクセスログを解析するソフト「ApacheLogViewer」です。Windows 用のソフトウェアですが、LinuxでApacheを運用している場合でも、 ログの出力形式はNCSA形式で統一されているので、access_log さえ読み込ませれば、ログを解析・分析することができます。
アクセスログ解析には、Analog や Webalizer、awstats などのように、ブラウザで閲覧するタイプのアクセスログ解析ソフトがありますが、ApacheLogViewer では、GUI で視覚的に詳細なデータを閲覧する事ができるので非常に見やすく便利です。以下では、その他のアクセス解析ソフトと比べて、どこらへんが具体的に便利なのかを説明していきます。
まず、個人的に特に重宝している点としては、特定のIPアドレスがどのページを閲覧したのかを簡単に集計してくれる点です。Webalizerや awstats のようなアクセスログ解析ソフトは、長期的なデータの収集には非常に便利なのですが、どのIPがどのページを閲覧したのかといった詳細なデータまでは表示されないので(←私が知らないだけかも)、短期的にデータを解析したい場合にはやや不便です。また、特定のページを見たユーザが次にどのページを開いたのかも追跡する事もできるので、今後のサイト制作に活かしていく事ができます。
例えば、ブログを運用している方は、投稿したばかりの記事がどれぐらい閲覧されているのか、また、どこからやってきたのか、気になったりしませんか?それが気になるなら、xrea の「AccessAnalyzer」 や 「忍者アクセス解析」を使えって話になるのですが、そこまでするほどじゃないんだよな~っていう場合もあります(笑)。しかも、ローカルなサイトの場合には、アクセス解析を設置していることを訪問者に意識させたくない場合もあるでしょう。
そういった場合は、このソフトを利用して Apacheの access_log を直接、解析しちゃえばいいのです。こっそりとね(笑)。これぞ、自宅サーバーの特権です♪ このソフトは、かなり詳細なデータまで表示させることができるので、使い方次第でいろいろと応用する事ができます。
■ApacheLogViewer の初期画面
ソフトを起動し、Apacheのacccess_log を読み込ませた状態の初期画面です。この画面だけでもかなり詳細なデータが一目でわかります。
■統計画面1
初期画面から「Statistics」をクリックしたときに表示される画面です。この画面では、より詳細なデータを表示させる事ができます。以下図は、どのキーワードで検索されて自分のサイトにやってきたのかが表示されています。
■統計画面2
以下図は、URLを対象に解析した画面です。どのページが人気があるのか、また人気がないのかを分析する際に利用できます。
上記の画面はほんの一部分であり、実際にはかなり細かく分析する事ができます。是非、自分で使ってこのソフトの便利さを体感してみてください。
■必要なデータだけを収集するように httpd.conf をカスタマイズする
Apache の httpd.conf を編集して、必要のないデータはカットするようにします。例えば、gif や jpg、png などの画像ファイルへのアクセスログや、アクセスカウンタへのアクセスログは、はっきりいって必要がないものなのでこういう無駄なログは極力、カットしておきましょう。サーバーへの負荷軽減&ログの肥大化防止&アクセス解析の簡便化にも繋がります。
次に、Apache の ログ形式を common から combined に変更しておくと良いでしょう。combined を指定する事で、リファラーやユーザーエージェントを取得する事ができます。
また、VirtualHost 運用している場合には、各サーバーごとに、access_win.log、access_linux.log などのように、サーバーログをきり分けておくことを推奨します。
以下の例では、ローカルネット(172.16.50.0/27)からのログは、localnet.log に保存し、外部インターネットからのログは、access_win.log に保存するように設定しています。また、gif、jpg、png、css、js へのアクセスログは、SetEnvIf ディレクティブを使ってログへ記録しないようにしています。
以下の設定の意味を詳しく知りたい場合は、筆者が以前に記述した「Apacheのログをカスタマイズ」を参考にしてください。
CustomLog /var/log/apache2/access_win.log combined env=!nolog
CustomLog /var/log/apache2/localnet.log combined env=!nolog
CustomLog /var/log/apache2/localnet.log combined env=localnet
ErrorLog /var/log/apache2/error_win.log
SetEnvIf Request_URI "\.(gif)|(jpg)|(png)|(css)|(js)$" nolog
SetEnvIf Remote_Addr ^172\.16\. localnet nolog
</VirtualHost>
■アクセスログを週別、もしくは、月別でローテートさせる
Apacheのアクセスログを分析しやすくするため、アクセスログを週別、もしくは月別にローテートするように設定しておくと良いでしょう。以下の例では、ログを週別にローテートさせ、それを12週間分(約3ヶ月)まで保存するように設定しています(つまり、12ファイル)。weekly の値を monthly にすることで月別でローテートさせることができますが、それだけ 1ファイルの容量が大きくなってしまうのでディスク容量があまり多くないサーバーでは注意が必要です。
/var/log/apache2/*.log {
weekly
rotate 12
missingok
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
}
以上で、ApacheLogViewerの解説は終了です。