Webサーバのアクセスログ管理(visitorsの運用)@2015.01.04

Webサービスを運用する場合、サービスをより良く利用してもらうために、GoogleAnalyticsなどのWebアクセス解析ツールを利用して、行動分析してWebサービスの内容変更などに役立てたりします。しかし、ユーザ側でWAF (Web Application Firewall)などを利用されると、Cookieの値やIPアドレスなどが正確に取れない場合が少なくありません。そこで、Webシステムを運用しているWebサーバのアクセスログを直接視覚化してWebアクセス解析の補足ツールとして利用する例を紹介します。利用するツールは、「visitors」になります。

visitorsのインストール

    • visitors-0.7をダウンロードし、実行バイナリファイルを作成
$ wget http://www.hping.org/visitors/visitors-0.7.tar.gz
$ tar zxvf visitors-0.7.tar.gz
$ cd visitors_0.7
$ make
$ su
    •  
    • root権限等で、PATHが通っているsbin等のディレクトリ (例:/usr/local/sbin/) に実行ファイルをコピー
$ su
# cp visitors /usr/local/sbin/
    •  
    • visitorsにPATHが通っているか確認
# exit
$ which visitors
/usr/local/sbin/visitors

visitorsによるWebアクセス統計を自動でhtml化して表示 (apache等のWebサーバが起動していることが前提)

    • crontabを利用して定期的にreport.htmlを作成する。
    • 下記の例では、4:00AMにreport.htmlを自動作成させるよう、crontabに”4 * *….”の行を追加。
    • Webサーバへのアクセスログ”access.log”が格納されている場所や、WebサーバのRootDirectoryの場所 (下記では、/var/www/) は、個々の環境にあわせてください。
$ su
# crontab -u root -e
* 4 * * * /usr/local/sbin/visitors -A -m 30 /var/log/apache2/access.log -o html > /var/www/webvisitors/report.html
    •  
    • crontabの内容を確認
# crontab -u root -l
* 4 * * * /usr/local/sbin/visitors -A -m 30 /var/log/apache2/access.log -o html > /var/www/webvisitors/report.html

Webアクセス結果をセキュアに管理する(Webサーバ上でhttpsが利用できることが前提)。

    • report.htmlへのアクセスは、https通信のみを利用するよう、”vi”コマンドで.htaccessに下記を記載する。
# cd /var/www/webvisitors/
# vi .htaccess
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
    •  
    • httpd.confやapache2.confに、下記の”# Digest Authentication”以降を追記する。
    • 下記では、”webmaster”というIDでDigest認証することを想定している。
# vi /etc/httpd/conf/httpd.conf
# Digest Authentication @ 2015.01.04
<Directory "/var/www/webvisitors">
    AuthType Digest
    AuthName "Secret Zone"
    AuthDigestDomain /webvisitors/
    AuthUserFile /etc/httpd/.htdigest
    Require user webmaster
</Directory>
    •  
    • Digest認証用のパスワードファイルを作成する。
    • 下記コマンド入力後にパスワードを入力する。
# htdigest -c /etc/httpd/.htdigest 'Secret Zone' webmaster
    •  
    • Webサーバを再起動する。
# service httpd restart
    •  
    • report.htmlが生成された後、report.htmlにアクセスしWebアクセス結果を確認する。

visitors-report

(技術開発部 林經正)