一旦Nginx Web服务器在生产环境下搭建并运行起来,你就希望能够实时监测其活动。实际上,普通的网络监控软件都可以提供支持实时监控Nginx的功能,比如Nagios、Zabbix和Munin。

不过,如果你不需要这类工具所提供的综合报告功能或长期统计数字,只想快速、简便地监控对Nginx Web服务器提出的请求,那么我会建议使用一款名为ngxtop的命令行工具

你一眼就会发现,无论名称还是界面,ngxtop的灵感均源自大名鼎鼎的top命令。ngxtop的功能就是,分析Nginx访问日志文件(以及其他日志文件,比如Apache2日志),并通过类似top的界面,实时显示分析后所得的结果。你可能吹嘘自己的综合监控工具拥有各种各样的所需功能,但说到简洁性,肯定比不过ngxtop,而简洁性是不可忽视的一大优点。

我在本教程中将介绍如何借助ngxtop,实时监控Nginx Web服务器。

将ngxtop安装在Linux上

首先,将pip安装在你的Linux系统上,这是ngxtop的一个前提条件。

然后安装ngxtop,如下所示。


    1. $ sudo pip install ngxtop


    ngxtop的使用方法

    ngxtop的基本使用方法如下:


      1. ngxtop [options] 
      2. ngxtop [options] (print|top|avg|sum) <var> 
      3. ngxtop info


      下面是一些常用选项。

      • -l <file>:访问日志文件(Nginx或Apache2)的完整路径
      • -f <format>:访问日志的格式
      • --no-follow:处理当前的日志文件快照,而不是实时写入到日志文件的新行
      • -t <seconds>:更新间隔时间
      • -n <number>:所显示的行数
      • -o <var>:排序标准(默认标准:数量)
      • -a <exp> ..., --a <exp> ...::将表达式(必须是聚合表达式:sum、avg、min和max等)添加到输出
      • -v:详细输出
      • -i <filter-expression>:只处理与过滤器匹配的记录

      下面是一些内置变量(用上面的<var>来表示)。它们的含义不言自明。

      • body_bytes_send
      • http_referer
      • http_user_agent
      • remote_addr
      • remote_user
      • request
      • status
      • time_local

      使用ngxtop监控Nginx

      默认情况下,ngxtop会设法从其配置文件(/etc/nginx/nginx.conf)查明Nginx访问日志的位置。因而,想监控Nginx,只要运行这个命令:



      1. $ ngxtop


      它会显示由Nginx处理的10个请求,按请求数量排序。

      想显示前20个最频繁的请求,只要运行这个命令:

      1. $ ngxtop -n 20

      nginx 感知 服务假死_监控工具

      想获得关于Nginx的信息(包括可用变量信息),只要运行这个命令:

      1. $ ngxtop info

      nginx 感知 服务假死_nginx_02

      如果你愿意,也可以定制所要显示的变量。为此,只要列出你感兴趣的变量。"print"命令会显示一个个请求。


        1. $ ngxtop print request http_user_agent remote_addr


        nginx 感知 服务假死_linux_03

        想显示客户机的最常出现的IP地址,只要运行这个命令:

        1. $ ngxtop top remote_addr

        nginx 感知 服务假死_监控工具_04

        想显示状态代码是404的请求,只要运行这个命令:

          1. $ ngxtop -i 'status == 404' print request status


          nginx 感知 服务假死_nginx_05

          除了Nginx外,ngxtop还能够处理其他日志文件,比如Apache访问日志。想监控Apache Web服务器,只要使用这个命令:



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