nginx日志监控工具之ngxtop
还在tail看nginx日志文件?out啦
tail -f 日志路径
ngxtop:
ngxtop是一个基于python的程序,可以在Python上安装。ngxtop通过实时解析nginx访问日志,并将结果(nginx服务器的有用指标)输出到终端
主要功能:
-
当前有效请求
-
总请求计数摘要
-
按状态代码提供的总请求数(2xx,3xx,4xx,5xx)
-
发送平均字节
-
顶级远程地址
不仅能实时监控Nginx日志的访问还可以对以前的日志进行排查整理。
安装:
示例为:centos7系统,安装了Python和pip
wget http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-6.noarch.rpm
rpm -ivh epel-release-7-6.noarch.rpm
然后执行以下命令安装pip
yum install python-pip
最后使用下面安装ngxtop
pip install ngxtop
ngxtop用法:
ngxtop [选项]
ngxtop [选项](print | top | avg | sum)<var>
ngxtop info
选项和具体:
# ngxtop --help
ngxtop - ad-hoc query for nginx access log.
Usage:
ngxtop [options]
ngxtop [options] (print|top|avg|sum) <var> ...
ngxtop info
ngxtop [options] query <query> ...
Options:
-l <file>, --access-log <file> 需要分析的访问日志
-f <format>, --log-format <format> log_format指令指定的日志格式 [默认: combined]
--no-follow ngxtop default behavior is to ignore current lines in log
and only watch for new lines as they are written to the access log.
Use this flag to tell ngxtop to process the current content of the access log instead.
-t <seconds>, --interval <seconds> report interval when running in follow mode [default: 2.0]
-g <var>, --group-by <var> 根据变量分组 [默认: request_path]
-w <var>, --having <expr> having clause [default: 1]
-o <var>, --order-by <var> 排序 [默认: count]
-n <number>, --limit <number> 显示的条数 [default: 10]
-a <exp> ..., --a <exp> ... add exp (must be aggregation exp: sum, avg, min, max, etc.) into output
-v, --verbose 更多的输出
-d, --debug print every line and parsed record
-h, --help 当前帮助信息.
--version 输出版本信息.
高级选项:
-c <file>, --config <file> 运行ngxtop解析nginx配置文件
-i <filter-expression>, --filter <filter-expression> filter in, records satisfied given expression are processed.
-p <filter-expression>, --pre-filter <filter-expression> in-filter expression to check in pre-parsing phase.
ngxtop示例:
范例:
All examples read nginx config file for access log location and format.
If you want to specify the access log file and / or log format, use the -f and -a options.
"top" like view of nginx requests
$ ngxtop
404前十的请求
$ ngxtop top request_path --filter 'status == 404'
总流量前十的请求
$ ngxtop --order-by 'avg(bytes_sent) * count'
访问量前十的ip地址
$ ngxtop --group-by remote_addr
输出400以上状态吗的请求以及请求来源
$ ngxtop -i 'status >= 400' print request status http_referer
Average body bytes sent of 200 responses of requested path begin with 'foo':
$ ngxtop avg bytes_sent --filter 'status == 200 and request_path.startswith("foo")'
使用common日志格式分析远程服务器Apache访问日志
$ ssh remote tail -f /var/log/apache2/access.log | ngxtop -f common
其他示例:
实时状态查看:
ngxtop -c /opt/nginx/conf/nginx.conf
访问前几的IP:
ngxtop -c /opt/nginx/conf/nginx.conf top remote_addr
显示状态码为404的请求:
ngxtop -i 'status == 404' print request status
显示前二十最频繁的请求:
ngxtop -n 20
使用普通格式从远程服务器解析apache日志:
ssh user@remote_server tail -f /var/log/apache2/access.log | ngxtop -f common