[tools]用ngxtop在命令行实时监控Nginx


Nginx网站服务器在生产环境中运行的时候需要进行实时监控。实际上,诸如 Nagios, Zabbix, Munin 的网络监控软件是支持 Nginx 监控的。

如果你不需要以上软件提供的综合性报告或者长期数据统计功能,只是需要一种快速简便的办法去监控 Nginx 服务器的请求的话,我建议你采用一个叫 ngxtop 的命令行工具。

你马上就会发现 ngxtop 从界面和名称都借鉴了著名的top命令。ngxtop 是通过分析 Nginx 或者其他的日志文件,使用类似 top 命令的界面实时展示出来的。你可以说你知道的其他高端监控工具,但是在简洁这方面 ngxtop 无疑是最好的。简单就意味着不可替代。

本指南中,我将介绍如何使用 ngxtop 实时监控 Nginx 网站服务器。

Linux 上安装 ngxtop

首先在 Linux 系统中安装依赖库 pip(LCTT译注:ngxtop是用python编写的)。

然后使用如下命令安装 ngxtop。

$ sudo pip install ngxtop

ngxtop 使用

基本使用方法如下:

  • ngxtop [options]
  • ngxtop [options](print|top|avg|sum)<var>
  • ngxtop info

这里是一些通用选项。

  • -l : 指定日志文件的完整路径 (Nginx 或 Apache2)
    -f : 日志格式
    --no-follow: 处理当前已经写入的日志文件,而不是实时处理新添加到日志文件的日志
    -t : 更新频率
    -n : 显示行号
    -o : 排序规则(默认是访问计数)
    -a ..., -a ...: 添加表达式(一般是聚合表达式如: sum, avg, min, max 等)到输出中。
    -v: 输出详细信息
    -i : 只处理符合规则的记录

以下是一些内置变量,他们的含义不言自明。

  • bodybytessend
    http_referer
    httpuseragent
    remote_addr
    remote_user
    request
    status
    time_local

使用 ngxtop 监控 Nginx

ngxtop 默认会从其配置文件 (/etc/nginx/nginx.conf) 中查找 Nginx 日志的地址。所以,监控 Nginx ,运行以下命令即可:

$ ngxtop
这将会列出10个 Nginx 服务,按请求数量排序。

显示当前20个最频繁的请求:$ ngxtop n 20

获取Nginx基本信息:$ ngxtop info

你可以自定义显示的变量,简单列出需要显示的变量。使用 “print” 命令显示自定义请求

$ ngxtop print request http_user_agent remote_addr

显示请求最多的客户端IP地址

$ ngxtop top remote_addr

显示状态码是404的请求

$ ngxtop i ‘status == 404′ print request status

除了Nginx,ngtop 还可以处理其他的日志文件,比如 Apache 的访问文件。使用以下命令监控 Apache 服务器:

$ tail f /var/log/apache2/access.log | ngxtop f common


英文链接:http://xmodulo.com/2014/06/monitor-nginx-web-server-command-line-real-time.html

译者:shipsw 校对:wxy

译文链接:http://linux.cn/article-3205-1.html


试用了之后感觉真的是非常给力,除了实时监控的功能看网站的响应速度外,还可以根据其中的内容有针对性的进行优化,比方说通过命令:ngxtop –no-fllow 查看就可知道我网站的这些地方是有待优化的;

通过命令:ngxtop –no-follow top remote_addr 可以查看来访者的IP情况;

通过命令:ngxtop –no-follow -i ‘status == 404’ print request status remote_addr 查看出现404页面最多的请求URL以及对应的访问IP(还让我不小心发现了一个攻击者o(╯□╰)o)

我自己也用之前搜集到的一些Python脚本和自己改写的shell脚本处理了一下nginx的log文件,可以将IP对应到地理位置(用的是纯真IP数据库),准备加上UserAgent的统计信息的,但是有了这个工具之后我觉得能把这个工具用好就不错了。

,

《 “[tools]用ngxtop在命令行实时监控Nginx” 》 有 7 条评论

  1. 金融业务系统日志精益化分析
    https://mp.weixin.qq.com/s/dWfCpMf0pXseXg5yPR6DfA
    `
    建立标准化的日志分析管理规范,不仅会使得企业日志分析有法可依,对 IT 服务稳定、安全、可靠,业务系统稳健、高效都有不可小觑的作用。

    日志系统规范化,包括日志记录规范化、日志采集规范化、日志存储规范化,而这需要基于工单系统实现。需求梳理、评审、平台建设,工单系统涵盖了日志分析体系的各个环节,保证没有预料之外的变更存在,则一切尽在掌握之中,个中妙用不必多说。

    日志管理规范化,也是明确角色职责,加强交易状态跟踪,明确问题根源,分析应用性能,满足安全管控、审计的需求。

    如果人工都没办法实现业务日志关联,想做关联分析,自然是需要改造日志的。
    `

  2. teler is an real-time intrusion detection and threat alert based on web log that runs in a terminal with resources that we collect and provide by the community.(基于 HTTP 访问日志的实时入侵检测工具)
    https://github.com/kitabisa/teler

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注