Folioscope

プログラミング/Unix系/デザイン/CG などのメモがもりもり

nginx + webalizer でアクセス解析

nginxとwebalizerを使ってアクセス解析するためのナイスな設定例が少ないのでメモ.

アクセス解析の準備

webalizerは本来Apacheのログを読みに行くので,nginxの出力するログをApacheに合わせます.
/etc/nginx/nginx.confファイルのhttpセクションにあるlog_formatを以下のように設定します.

http {
  .....
  log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                    '"$status" $body_bytes_sent "$http_referer" '
                    '"$http_user_agent" "$http_x_forwarded_for" "$gzip_ratio"';
  .....
}

そしてwebalizerが読みに行くログの場所を,nginxのログの場所に設定します.
/etc/webalizer.confを次のように設定します.

LogFile         /var/log/nginx/access.log

またwebalierの出力先も変えておきましょう.
このディレクトリは予め作成しておきます.

OutputDir      /var/www/webalizer

解析を行う

webalizerはデーモンではなく,処理がすぐに帰ってくる系プロセスです.
解析をおこなうには,管理下権限でwebalizerを実行します.

> webalizer

処理が成功すると/var/www/webalizerに解析結果が出力されているはずです.
エラーがなかったら/etc/crontabに登録します.

0 0 * * * * root /usr/bin/webalizer

解析結果を見る

解析結果は外部に公開したくは無いが,httpsなどで認証・暗号化するのは少々手間です.
そこで少し手を抜いて,localhostにのみ公開します.
nginxの設定で次のように新たにserverを作成し,ファイアウォールで閉じられている適当なポートにのみ公開します.

server {
  listen       8080 default_server;
  server_name  <server_name>
  location / {
    root   /var/www/webalizer;
    index  index.html index.htm;
    access_log off;
  }
}

webalizerのページにアクセスするには,サーバにログインしhttp://localhost:8080/を開きます.
この図は,w3mで開いた時のスクリーンショットで,これでも十分に使えます.
f:id:ibenza:20130204131137p:plain
またsshでLocal Forwardを使って,ローカルホスト側で見る方法もあります.
次のようにsshのセッションを開始して,ローカルホストのブラウザでlocalhost:12321を開きます.

ssh -L12321:localhost:8080 -p11235 <server_name>

P.S.

ssh越しでw3mを起動しても,マウスクリックでリンクを踏むことができるのを知りました.