nginxでvisitorsを使う

nginx

nginxが生成したログを、Visitorsで解析/表示するように設定してみました。

サーバとして「さくらのVPS 2G」を利用し、その上で”nginx with FastCGI on Ubuntu”が動いています。

以下、作業ログです。

nginxのログをApache2互換形式に変更する。

$ sudo vi /etc/nginx/nginx.conf
http {

        ##
        # Logging Settings
        ##

        log_format main '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

        access_log /var/log/nginx/access.log;
        error_log /var/log/nginx/error.log;

}

解析結果出力用ディレクトリにアクセス制限を掛ける。

    $ sudo vi /etc/nginx/sites-available/default
    server {

            location ^~ /visitors/ {
                auth_basic  "basic authentication";
                auth_basic_user_file /etc/nginx/.htpasswd;
            }

    }

    $ sudo service nginx restart

インストールと動作テスト。

    $ sudo aptitude install visitors
    $ mkdir /home/USER01/www/visitors
    $ visitors -GKZURDOBXYS -m 50 /var/log/nginx/access.log -P http://www.hide10.com -f /home/USER01/www/visitors/index.html

logrotateの設定確認。必要なら変更する。

    $ cat /etc/logrotate.d/nginx
    /var/log/nginx/*.log {
            weekly
            missingok
            rotate 52
            compress
            delaycompress
            notifempty
            create 0640 www-data adm
            sharedscripts
            prerotate
                    if [ -d /etc/logrotate.d/httpd-prerotate ]; then \
                            run-parts /etc/logrotate.d/httpd-prerotate; \
                    fi; \
            endscript
            postrotate
                    [ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
            endscript
    }

cron.dailyに登録する。

$ sudo vi /etc/cron.daily/0_visitor
    #!/bin/sh

    visitors -GKZURDOBXYS -m 50 /var/log/nginx/access.log -P http://www.hide10.com -f /home/USER01/www/visitors/index.html
$ sudo chmod 755 /etc/cron.daily/0_visitor

以上です。