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アクセス結果を確認する。
(技術開発部 林經正)