English |
  • 美国VPS主机推荐
  • |
  • 代购服务
  • |
  • 10美元以下VPS
  • |
  • VPS新手指南/教程
  • |
  • 留言板
  • |
  • 关于
  • | 登录 |

    Nginx日志实时监控、排查整理工具 - ngxtop

    2016年03月21日 下午 | 作者:

    要实时查看日志文件变动我们首先想到的应该是tail -f /path/to/log,但是这样看网站的访问日志是相当崩溃的,好一点可以写个脚本进行筛选,但是大部分人还是不擅长的,今天VPS侦探就推荐给大家一个Nginx日志工具:ngxtop

    说起top工具有很多如:iftop、htop、ntop等,今天说的ngxtop功能也毫不逊色,不仅能实时监控Nginx日志的访问还可以对以前的日志进行排查整理。

    安装ngxtop

    ngxtop是使用python编写的,所以使用pip安装最简单了,可能有些用户没有安装pip,下面我们一块加上pip的安装步骤:

    Fedora:yum install python-pip
    CentOS/RHEL需先安装EPEL,安装完后:yum install python-pip
    Debian/Ubuntu:apt-get install python-pip

    安装完pip就可以安装ngxtop:pip install ngxtop

    某ss啥的你们懂的,通过pip安装也是很简单的。

    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.vpser.net.log

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

    日志分析

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

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

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

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

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

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

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

    VPS论坛邀请码:https://bbs.vpser.net/reg.php?invitecode=39a41e6e55fmGsAG 有效期至:2016-3-25 19:18

    >>转载请注明出处:VPS侦探 本文链接地址:https://www.vpser.net/manage/ngxtop.html
    VPS侦探推荐:
    遨游主机DiaHostingLinodePhotonVPSOAH新加坡VPSLOCVPSKVMLAVPS2EZBudgetVMVultr美国VPS主机
    欢迎加入VPS侦探论坛交流:https://bbs.vpser.net

    发表评论

    *必填

    *必填 (不会被公开)

    8 + 3 = ?