会社のホスティングサービス用のSubversionにアクセスログ解析ツールを導入してみました。
今までリソース状況(CPU,メモリ,ディスク,トラフィック)等の監視はずっと実施していたのですが、日々のアクセス頻度、利用状況等をしっかり調べられてはいなかったので、毎日どの程度のリクエストが飛んできているのか、どの時間帯にピークを向かえるのか等をきちんと把握しようと思いまして。
で、Subversionサービスは、HTTP経由でのやりとりとなっていて、皆さんよくご存知のApacheというWebサーバがフロントエンドにいます。
つまり、このApacheのHTTPアクセスログを解析すれば、Subversionに関してもアクセス頻度等は把握できるわけです。
# HTTPリクエストレベルで、ですけど。厳密に利用頻度を調べようとすると、SVN操作ログとかの方がいいですね。
# Subversionの操作ログに関しては、「Subversionの操作ログをサーバ側で出力する方法」のあたりを。
世の中には色んなアクセス解析ツールがありますが、個人的にはAWSTATSが好みです。
有名なものといえば、Analogかもしれませんが、AWSTATSの統計情報のビュー(画面)が、この手のツールで一番見やすいのではないかと感じています。(ブラウザ等で見れます)
# さほど目新しいツールじゃないですが、もちろんオープンソースです。無料で使えます。
どんな解析・統計情報が取れるかは、↑の画像をクリックしていただいて、画像の左側のメニューがあり、そこで取得可能な情報一覧がありますので、ご参考までに。
ちなみに、この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
参考
- AWStats 6.0ドキュメント - セットアップ