2015年9月28日月曜日

ngxtop for analyze Nginx log

https://github.com/lebinh/ngxtop
ngxtop parses your nginx access log and outputs useful, top-like, metrics of your nginx server. So you can tell what is happening with your server in real-time.
ngxtopは、nginxのログをリアルタイムに解析して、topコマンドのように表示してくれるプログラムです。
オプションをつけたりして工夫すると、Apacheのlogも扱えることができるようです。
sshログインして、どこにアクセスが来ているのかな?というふうに、ぱぱっと見ることができるので、使えるようにしておいて損はしないと思います。

以下、インストールメモです。pipで入るので簡単です。
環境: CentOS 6
# yum install python-setuptools
# easy_install pip
# pip install ngxtop
# ngxtop -h
通常のログフォーマットの他に、以下の様な、LTSVフォーマットのログも解析できます。
ngxtopがnginx.confをパースしてくれるので、とくにオプションの指定は必要ないです。
# cat /etc/nginx/nginx.conf
~~~
    log_format  ltsv  "time:$time_local"
                      "\thost:$remote_addr"
                      "\tforwardedfor:$http_x_forwarded_for"
                      "\treq:$request"
                      "\tstatus:$status"
                      "\tsize:$body_bytes_sent"
                      "\treferer:$http_referer"
                      "\tua:$http_user_agent"
                      "\treqtime:$request_time"
                      "\tapptime:$upstream_response_time"
                      "\tvhost:$host";

    access_log  /var/log/nginx/access.log ltsv;
~~~
ngxtop infoと打つと、どのログを解析するのか見ることができます。
# ngxtop info
nginx configuration file:
  /etc/nginx/nginx.conf
access log file:
  /var/log/nginx/access.log
access log format:
  time:$time_local\thost:$remote_addr\tforwardedfor:$http_x_forwarded_for\treq:$request\tstatus:$status\tsize:$body_bytes_sent\treferer:$http_referer\tua:$http_user_agent\treqtime:$request_time\tapptime:$upstream_response_time\tvhost:$host
available variables:
  body_bytes_sent, host, http_referer, http_user_agent, http_x_forwarded_for, remote_addr, request, request_time, status, time_local, upstream_response_time
違うパスのログファイルを解析するときは、オプションを付ければOKです。
Options:
    -l , --access-log   access log file to parse.

Title pic from Linux Screenshots Log Monitoring Tool - ngxtop