AWSTATSでSubversionのアクセスログ解析

Nissan GT-R


会社のホスティングサービス用のSubversionにアクセスログ解析ツールを導入してみました。


今までリソース状況(CPU,メモリ,ディスク,トラフィック)等の監視はずっと実施していたのですが、日々のアクセス頻度、利用状況等をしっかり調べられてはいなかったので、毎日どの程度のリクエストが飛んできているのか、どの時間帯にピークを向かえるのか等をきちんと把握しようと思いまして。


で、Subversionサービスは、HTTP経由でのやりとりとなっていて、皆さんよくご存知のApacheというWebサーバがフロントエンドにいます。

つまり、このApacheのHTTPアクセスログを解析すれば、Subversionに関してもアクセス頻度等は把握できるわけです。
# HTTPリクエストレベルで、ですけど。厳密に利用頻度を調べようとすると、SVN操作ログとかの方がいいですね。
# Subversionの操作ログに関しては、「Subversionの操作ログをサーバ側で出力する方法」のあたりを。


世の中には色んなアクセス解析ツールがありますが、個人的にはAWSTATSが好みです。
有名なものといえば、Analogかもしれませんが、AWSTATSの統計情報のビュー(画面)が、この手のツールで一番見やすいのではないかと感じています。(ブラウザ等で見れます)
# さほど目新しいツールじゃないですが、もちろんオープンソースです。無料で使えます。


https://farm3.static.flickr.com/2289/2199293289_1de5abf193_o.png https://farm3.static.flickr.com/2344/2200085972_ee0d7f9791_o.png


どんな解析・統計情報が取れるかは、↑の画像をクリックしていただいて、画像の左側のメニューがあり、そこで取得可能な情報一覧がありますので、ご参考までに。


ちなみに、このAWSTATSは、HTTPサーバ専門というわけではなく、ストリーミングサーバや、メールサーバ、FTPサーバ等のログも解析できるようです。


以下に、インストール作業ログを残しておきます。

尚、統計情報を表示するために、これまたApacheを使っていますが、そのApacheは既にインストール済みという前提です。
# 別に、Apacheじゃなくてlighttpdだって何でも良いです。適宜パラメータを置き換えていただければ。


あと、以下はLinuxでの導入(インストール)例です。
AWSTATS自体は、Perlスクリプトなので、Perlが動く環境であればWindows等でも動作可能です。多分。
# 今まで何度かインストールしていたのですが、作業ログを公開していなかったので、これを機に。どこかでお役に立てれば。



AWSTATSのダウンロード(日本語版)

今回、完全日本語版のAWSTATSを使ってみました。
詳しくは、http://www.bflets.dyndns.org/Tools/AWStatsJpn.html まで。

$ wget http://www.bflets.dyndns.org/AWStats66_Jpn.tar.gz

AWSTATSの解凍&リネーム&移動

$ tar zxvf AWStats66_Jpn.tar.gz
$ sudo mv AWStats66_Jpn /usr/local/awstats 

Apacheのログフォーマットを変更

AWSTATSのデフォルト設定では、Apacheのcombinedのフォーマット形式に準拠されています。
このあたりは、AWSTATS側でも解析すべきログフォーマットに柔軟にあわせることが出来ます。

とりあえずデフォルトのまま使うので、変えたところの差分だけ。

$ diff /usr/local/apache2/conf/httpd.conf /etc/apache/httpd.conf 
504c503,504
< CustomLog logs/access_log common
---
> #CustomLog /var/log/apache/access_log common
> CustomLog /var/log/apache/access_log combined

Apache設定ファイルにAWSTATS用の設定を追記(統計情報ビュー用)

既に、追記すべき内容を記したファイルが同梱されているので、そのファイルをコピー。

$ cp /usr/local/awstats/tools/httpd_conf /etc/apache/awstats.conf

んで、httpd.confでIncludeするべく以下を追加。

$ vi /etc/apache/httpd.conf 

Includeの一文を追記するだけです。

Include awstats.conf

設定ファイルの設置

AWSTATSはデフォルトで/etc/awstats以下を読みにいってくれるので、ここに。
設定ファイル名は、awstats.${ホスト(プロファイル)名}.conf となります。
今回は、"domainname"として進めます。

$ sudo mkdir -p /etc/awstats
$ sudo chown rx7:rx7 /etc/awstats/
$ cp /usr/local/awstats/wwwroot/cgi-bin/awstats.model_jp.conf /etc/awstats/awstats.domainname

AWSTATS設定ファイルの修正

変えたところの差分だけー。

ちなみにAWSTATSでは、HTTPステータスコードが200と304のログのみをデフォルトで解析対象としています。

Subversionは、HTTP経由だとWebDAVを使うこととなるので、WebDAVで使うメソッドに準じたHTTPステータスコードが
返ってくることも考慮して、201や204、207も解析対象として設定します。

$ diff /usr/local/awstats/wwwroot/cgi-bin/awstats.model_jp.conf /etc/awstats/awstats.domainname.conf 
55c55
< LogFile="/var/log/httpd/mylog.log"
---
> LogFile="/var/log/apache/access_log"
167c167
< SiteDomain=""
---
> SiteDomain="domainname"
184c184 
< HostAliases="localhost 127.0.0.1 REGEX[myserver\.com$]"
---
> HostAliases="localhost 127.0.0.1 domainname"
204c204 
< DNSLookup=1
---
> DNSLookup=0
223c223
< DirData="."
---
> DirData="/var/awstats"
243c243
< DirIcons="/icon"
---
> DirIcons="/awstatsicons" 
379c379
< AllowAccessFromWebToFollowingIPAddresses=""
---
> AllowAccessFromWebToFollowingIPAddresses="127.0.0.1 xxx.xxx.xxx.xxx"
626c626
< ValidHTTPCodes="200 304" 
---
> ValidHTTPCodes="200 201 204 207 304"

解析データ配置場所の作成

解析済みのデータをどこに置くか、ですね。
デフォルトではテキスト形式で保存されます。

$ sudo mkdir -p /var/awstats
$ sudo chown rx7:rx7 /var/awstats 

解析実行

以下のようなコマンドを実行することで解析が実行されます。

  • configオプションで指定するのは、設定ファイルの${ホスト(プロファイル)名}となります。

解析が完了すると統計情報のビューが反映されます。

$ /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=domainname -update 

解析・統計情報の閲覧

というわけで、以下のような感じのURLで統計情報が参照できます。
${servername}の部分は、適宜AWSTATSをインストールしたサーバ名に置き換えてください。

http://${servername}/awstats/awstats.pl?config=domainname

cronの設定

最後に、解析を定期実行するために、cronに仕掛けたら、作業は完了です。

59 * * * * /usr/local/awstats/wwwroot/cgi-bin/awstats.pl -config=domainname -update > /dev/null

参考