今天明月给大家分享个 Nginx 日志实时监控工具,相对于早期推荐的 Goaccess 来说更加的简单实用,部署和运行也是超级的简单, ngxtop 不仅可以对以前的日志进行排序、整理还可以实时监控 Nginx 日志。
ngxtop 安装
ngxtop 是 Python 编写的,所以安装需要 Python2 或者 Python3 的环境,大家需要自行先配置好 Python 的环境。
使用 pip 来安装 ngxtop :
Fedora:yum install python-pip
CentOS/RHEL需先安装EPEL,安装完后:yum install python-pip
Debian/Ubuntu:apt-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
。
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会给大家带来一些管理上的方便。
5 条评论
的文章写得很用心,受教了!谢谢
运营分析现在感觉是个体力活了OωO
是的!OωO
不错
谢谢支持!常来哦!