使用ngxtop实时监控nginx

Ngxtop实时解析nginx访问日志,并且将处理结果输出到终端,功能类似于系统命令top,所以这个软件起名ngxtop。有了ngxtop,你可以实时了解到当前nginx的访问状况,再也不需要tail日志看屏幕刷新。

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

1.安装ngxtop

#yum install python python-pip -y

#yum install ngxtop  -y

2. ngxtop使用详解

# ngxtop --help
ngxtop - ad-hoc query for nginx access log.

Usage:
    ngxtop [options]
    ngxtop [options] (print|top|avg|sum) <var> ...
    ngxtop info
    ngxtop [options] query <query> ...

Options:
    -l <file>, --access-log <file>  需要分析的访问日志
    -f <format>, --log-format <format>  log_format指令指定的日志格式 [默认: combined]
    --no-follow  ngxtop default behavior is to ignore current lines in log
                     and only watch for new lines as they are written to the access log.
                     Use this flag to tell ngxtop to process the current content of the access log instead.
    -t <seconds>, --interval <seconds>  report interval when running in follow mode [default: 2.0]

    -g <var>, --group-by <var>  根据变量分组 [默认: request_path]
    -w <var>, --having <expr>  having clause [default: 1]
    -o <var>, --order-by <var>  排序 [默认: count]
    -n <number>, --limit <number>  显示的条数 [default: 10]
    -a <exp> ..., --a <exp> ...  add exp (must be aggregation exp: sum, avg, min, max, etc.) into output

    -v, --verbose  更多的输出
    -d, --debug  print every line and parsed record
    -h, --help  当前帮助信息.
    --version  输出版本信息.

    高级选项:
    -c <file>, --config <file>  运行ngxtop解析nginx配置文件
    -i <filter-expression>, --filter <filter-expression>  filter in, records satisfied given expression are processed.
    -p <filter-expression>, --pre-filter <filter-expression> in-filter expression to check in pre-parsing phase.

范例:
    All examples read nginx config file for access log location and format.
    If you want to specify the access log file and / or log format, use the -f and -a options.

    "top" like view of nginx requests
    $ ngxtop

    404前十的请求
    $ ngxtop top request_path --filter ‘status == 404‘

    总流量前十的请求
    $ ngxtop --order-by ‘avg(bytes_sent) * count‘

    访问量前十的ip地址
    $ ngxtop --group-by remote_addr

    输出400以上状态吗的请求以及请求来源
    $ ngxtop -i ‘status >= 400‘ print request status http_referer

    Average body bytes sent of 200 responses of requested path begin with ‘foo‘:
    $ ngxtop avg bytes_sent --filter ‘status == 200 and request_path.startswith("foo")‘

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

以下是一些内置变量,他们的含义不言自明。使用 ngxtop info 命令也可以查看到可使用的内置变量名

  • body_bytes_sent
  • http_referer
  • http_usera_gent
  • remote_addr
  • remote_user
  • request
  • status
  • time_local

ngxtop print  request  http_user_agent   remote_addr   -l  /usr/local/nginx/logs/access.log

3. ngxtop实例

3.1 实时状态

# ngxtop -c /usr/local/nginx/conf/nginx.conf

3.2 访问量前十的IP

#ngxtop -c /usr/local/nginx/conf/nginx.conf  top remote_addr

4. 注意事项

4.1 ngxtop单条命令无法执行,提示如下错误提示时:

Error: Access log file or format was not set and nginx config file cannot be detected. Perhaps nginx is not in your PATH?

方法一:软连接

ln -sv /usr/local/nginx/sbin/nginx /sbin/

方法二:修改环境变量

# vim /etc/profile

export PATH=$PATH:/usr/local/nginx/sbin

# source /etc/profile

方法三:指定配置文件

# ngxtop -c /usr/local/nginx/conf/nginx.conf 或者还需要指定访问日志文件  -l /usr/local/nginx/logs/access.log

当提示 Error: access log file "logs/accss.log" does not exist 时,修改一下nginx.conf的日志存放位置,将其改成绝对路径后即可。

4.2 虚拟主机配置文件必须在nginx.conf主配置中
一般情况下,我们会将虚拟主机单独写到一个配置文件中,然后nginx.conf做个include。例如我们站点www.ttlsa.com
配置文件:/usr/local/nginx-1.5.2/conf/vhost/www.ttlsa.com.conf
再nginx.conf的http段中添加include vhost/*.conf

时间: 2024-11-20 22:26:33

使用ngxtop实时监控nginx的相关文章

利用ngxtop实时监控nginx的访问情况

关于对nginx web server的实时访问的实时监控问题,我很久之前就想实现的,现在虽有nginx自带的status扩展,但那是全局的,无法细分到vhost,并且提供的metric也很少,加之目前是通过cacti每5分钟取nginx status,实时性也不是很好,记得前一阵为maptail兴奋一点,以为能够解决我的问题,可是他只是漂亮的在地图上显示实时用户的ip地理位置信息,没有其他功能了,不过他的思想很重要---"tail -f log",如今的ngxtop其实也是这种思想,

ngxtop实时监控nginx状态

ngxtop实时解析nginx访问日志,并且将处理结果输出到终端,功能类似于系统命令top,所以这个软件起名ngxtop.有了ngxtop,你可以实时了解到当前nginx的访问状况,再也不需要tail日志看屏幕刷新. 1. 安装ngxtop 1.1 源码安装 1 2 3 4 5 6 # wget https://github.com/lebinh/ngxtop/archive/master.zip -O ngxtop-master.zip # unzip ngxtop-master.zip #

ngxtop:在命令行实时监控 Nginx 的神器

Nginx网站服务器在生产环境中运行的时候需要进行实时监控.实际上,诸如Nagios, Zabbix, Munin 的网络监控软件是支持 Nginx 监控的. 如果你不需要以上软件提供的综合性报告或者长期数据统计功能,只是需要一种快速简便的办法去监控 Nginx 服务器的请求的话,我建议你采用一个叫 ngxtop 的命令行工具. 你马上就会发现 ngxtop 从界面和名称都借鉴了著名的top命令.ngxtop 是通过分析 Nginx 或者其他的日志文件,使用类似 top 命令的界面实时展示出来的

利用ngxtop工具对nginx日志实时分析

参考:通过ngxtop实时监控webserver的访问情况 一.部署 准备:python2.7.3+.SQLite(否则会报错) 编译安装SQLite cd /usr/local/src && wget    #下载安装包,最新安装包请参考 tar xf sqlite-autoconf-3230100.tar.gz && cd sqlite-autoconf-3230100  #解压安装包 ./configure --prefix=/usr/local/sqlite &am

基于Storm的Nginx log实时监控系统

背景 UAE(UC App Engine)是一个UC内部的PaaS平台,总体架构有点类似CloudFoundry,包括: 快速部署:支持Node.js.Play!.PHP等框架 信息透明:运维过程.系统状态.业务状况 灰度试错:IP灰度.地域灰度 基础服务:key-value存储.MySQL高可用.图片平台等 这里它不是主角,不作详细介绍. 有数百个Web应用运行在UAE上,所有的请求都会经过UAE的路由,每天的Nginx access log大小是TB级,如何实时监控每个业务的访问趋势.广告数

zabbix监控nginx 状态

利用zabbixt监控nginx的各种状态,达到对nginx的实时监控: 一,首先需要开启nginx的nginx_status模块 开启nginx_status功能:  location /nginx_status{     stub_status on;     access_log off;     allow 192.168.1.113;  访问IP     deny all;   } 访问: http://192.168.1.113/nginx_status 需要写一个脚本在被监控机上跑

Zabbix快速部署及自定义Item监控Nginx状态原理

监控软件的选择 1)Nagios 优点:监控协议多.完善的告警机制.服务抖动检测 缺点:只能在终端配置.基于文件的配置方式.不方便扩展.易读性差.管理耗时 2)Cacti 优点:多样的图形化数据.历史数据存储.趋势对比 缺点:报警机制不完善.只支持集中式数据监控 3)Zabbix 优点:集合了Nagios和Cacti大部分优点,功能强大:特别是在针对集群机器较多.业务环境复杂和跨机房监控方面有优势(proxy收集功能) 缺点:部署稍微复杂,不支持服务抖动检测等... Zabbix特点 · 多种数

用java写一个远程视频监控系统,实时监控(类似直播)我想用RPT协议,不知道怎么把RPT协议集成到项目中

我最近在用java写一个远程视频监控系统,实时监控(类似直播)我想用RPT协议,不知道怎么把RPT协议集成到项目中,第一次写项目,写过这类项目的多多提意见,哪方面的意见都行,有代码或者demo的求赏给我,谢谢

zabbix用户自定义key检测内存信息和监控nginx的状态页

用户自定义key: 位置:在zabbix agent端实现: zabbix_agent.conf UserParamenter 语法格式: UserParamenter=<key>,<command> 示例: ~]# vim /etc/zabbix/zabbix_agentd.conf UserParameter=memory.free,cat /proc/meminfo | awk '/^MemFree:/{print $2}' # 没有参数时,如果要使用$,正常使用即可,如果是