ngxtop控制台终端Nginx日志实时监控工具

2018-06-23 小惟 42

给大家分享个 Nginx 日志实时监控工具,相对于早期推荐的 Goaccess 来说更加的简单实用,部署和运行也是超级的简单, ngxtop 不仅可以对以前的日志进行排序、整理还可以实时监控 Nginx 日志。

15279070928650967f8ebc1.jpg

ngxtop 安装

ngxtop 是 Python 编写的,所以安装需要 Python2 或者 Python3 的环境,大家需要自行先配置好 Python 的环境。
使用 pip 来安装 ngxtop :

Fedorayum install python-pip
CentOS/RHEL需先安装EPEL,安装完后yum install python-pip
Debian/Ubuntuapt-get install python-pip

然后运行:

pip install ngxtop

ngxtop使用参数

ngxtop 参数 print|top|avg|sum
ngxtop info 显示日志格式信息

  • -l <file>--access-log <file> 设置日志路径

  • -f <format>--log-format <format> 设置日志格式,默认格式combined,另外一种较常用格式为common

  • --no-follow 处理以前的日志,实时日志不做处理

  • -t <seconds> 或 --interval <seconds> 刷新频率,默认2秒

  • -g <var>或 --group-by <var> 按变量分组,默认显示 request_path

  • -w <var>或 --having <expr> 筛选 [default: 1]

  • -o <var>或 --order-by <var> 输出的排序方式,默认: 访问数

  • -n <number>或 --limit <number> 显示top多条,默认前top 10条

  • -a <exp> ...或 --a <exp> ... 对输出字段做处理,可选 sum, avg, min, max

  • -v或 --verbose 详细输出

  • -d或 --debug debug模式,输出每行及记录

  • -h或 --help 显示帮助详细

  • --version 显示版本信息

高级参数

  • -c <file>或 --config <file> 指定nginx配置文件,自动分析日志格式

  • -i <filter-expression>或 --filter <filter-expression> 满足表达式的过滤将被处理

  • -p <filter-expression>或 --pre-filter <filter-expression> in-filter expression to check in pre-parsing phase.

另外一些变量可以在分析时用到,名字含义同日志格式里的设置:remote_addr、remote_user、time_local、request、request_path、status、body_bytes_sent、http_referer、http_user_agent

QQ截图20180621101746.jpg

ngxtop使用实例

实时监控日志

ngxtop -l /home/wwwlogs/www.imydl.tech.log

虽然直接执行 ngxtop 会自动搜索 nginx.conf ,但是直接解析里面默认虚拟主机的,建议直接指定日志文件。可以指定上 -n 限定条数,也可以指定上 -g http_user_agent 按 useragent 查看。

日志分析

ngxtop -l /home/wwwlogs/www.imydl.tech.log --no-follow 可以加一下参数进行详细分析,下面几个例子

按rquest_path且是404的前10请求:ngxtop -l /home/wwwlogs/www.imydl.tech.log --no-follow top request_path --filter 'status == 404'

按总bytes sent最高的前10:ngxtop -l /home/wwwlogs/www.imydl.tech.log --no-follow --order-by 'avg(bytes_sent) * count'

按remote address进行排序前10:ngxtop -l /home/wwwlogs/www.imydl.tech.log --no-follow --group-by remote_addr

显示400或更高返回状态码的且只显示request、status、http_referer这三列信息:ngxtop -l /home/wwwlogs/www.imydl.tech --no-follow -i 'status >= 400' print request status http_referer

显示bytes_sent平均值且状态码为200且request_path以vpser开始的前10:ngxtop -l /home/wwwlogs/www.imydl.tech.log --no-follow avg bytes_sent --filter 'status == 200 and request_path.startswith("vpser")'

大家可以组合前面的命令进行日志的实时监控和日志排查整理,相信ngxtop会给大家带来一些管理上的方便。