Nginx Reqstat 模块监控

Nginx Reqstat 模块监控

部署步骤

创建nginx用户 useradd nginx

1编译安装nginx

2下载reqstat模块 wget https://github.com/zls0424/ngx_req_status/archive/master.zip -O ngx_req_status.zip

3添加模块 -add-module=/usr/local/ngx_req_status-master

4cp /usr/local/nginx/obj/nginx /usr/local/ngix/sbin

5启动nginx /usr/local/ngix/sbin/nginx

性能 主要监控 连接数、请求数、各种响应码范围的请求数、输入输出流量、rt、upstream访问等。

Stub Status 参数说明

名称 描述 是否累加历史记录
Accepts(接受) nginx接受客户端连接数(包括Handled,Dropped+Waiting)
Handled(已处理数) 成功处理客户端的连接数(包括Waiting状态连接)
Active(活跃) 当前活跃的客户连接数
Dropped(已丢弃) 已丢弃连接数(出错)
Requests(请求数) 客户端请求数
Waiting(等待) 正在等待的连接数
Reading(读) 正在执行读操作连接数
Writing(写) 正在执行写操作的链接数

Active connections:2 #当前nginx处理请求的数目(活跃的连接数)

server accepts handled requests
26 26 48

nginx总共处理了26个连接,成功创建26次握手,也就是成功的连接数connection. 总共处理了48个请求

失败连接=(总连接数-成功连接数)(相等表示中间没有失败的),

Reqstat 模块监控

描述

  • ngx_http_reqstat_module 模块

  • 这个模块计算定义的变量,根据变量值分别统计 nginx 的运行状况。

  • 可以监视的运行状况有:连接数、请求数、各种响应码范围的请求数、输入输出流量、rt、upstream访问等。

  • 可以指定获取所有监控结果或者一部分监控结果。

  • 利用变量添加自定义监控状态。总的监控状态最大个数为50个。

  • 回收过期的监控数据。

  • 设置输出格式

  • 跟踪请求,不受内部跳转的影响

  • 不要使用与响应相关的变量作为条件,比如"$status"

    现在通过ngx_req_status_module能够统计Nginx中请求的状态信息。需要安装第三方模块

安装模块: 记得创建nginx用户 useradd nginx

下载ngx_req_status_module 模块, 这是第三方模块需要添加
[root@nginx-server ~]# wget https://github.com/zls0424/ngx_req_status/archive/master.zip -O ngx_req_status.zip
[root@nginx-server ~]# unzip ngx_req_status.zip
[root@nginx-server ~]# cp -r ngx_req_status-master/ /usr/local/ #与解压的nginx在同一级目录下
[root@nginx-server ~]# cd /usr/local/nginx-1.16.0/
[root@nginx-server nginx-1.16.0]# yum -y install pcre pcre-devel openssl openssl-devel gcc gcc-c++   zlib zlib-devel
[root@nginx-server nginx-1.16.0]# yum -y install patch.x86_64
[root@nginx-server nginx-1.16.0]# patch -p1 < ../ngx_req_status-master/write_filter-1.7.11.patch
[root@localhost nginx-1.16.0]# ./configure 添加上原来的参数 --add-module=/usr/local/ngx_req_status-master
[root@localhost nginx-1.16.0]# make 
由于原先已有nginx,所以不能执行make install,否则会覆盖掉以前的配置文件及内容
[root@localhost nginx-1.16.0]# mv /usr/sbin/nginx /usr/sbin/nginx_bak
[root@localhost nginx-1.16.0]# cp objs/nginx /usr/sbin/
[root@localhost nginx-1.16.0]# systemctl restart nginx 
[root@localhost nginx-1.16.0]# nginx -V

Reqstat监控配置

[root@localhost ~]# vim /etc/nginx/nginx.conf
req_status_zone server_name $server_name 256k;(开启的req监控)
req_status_zone server_addr $server_addr 256k;
req_status_zone server_url  $server_name$uri 256k;
req_status server_name server_addr server_url;
server {
        server_name localhost;
        location /req-status {
        req_status_show on;
        }
}
指令介绍
 req_status_zone
语法: req_status_zone name string size
默认值: None
配置块: http
定义请求状态ZONE,请求按照string分组来排列,例如:
req_status_zone server_url  $server_name$uri 256k;
域名+uri将会形成一条数据,可以看到所有url的带宽,流量,访问数

req_status
语法: req_status zone1[ zone2]
默认值: None
配置块: http, server, location
在location中启用请求状态,你可以指定更多zones。

req_status_show
语法: req_status_show on
默认值: None
配置块: location
在当前位置启用请求状态处理程序

192.168.187.164/req-status

zone_name	key	max_active	max_bw	traffic	requests	active	bandwidth
server_addr	192.168.187.164	2	 432	17K	18	1	 0
server_name	192.168.187.164	2	 432	17K	18	1	 0
server_url	192.168.187.164/	1	 0	 0	8	0	 0
server_url	192.168.187.164/index.html	1	 0	11K	8	0	 0
server_url	192.168.187.164/req-status	1	 0	 0	1	1	 0
server_url	192.168.187.164/req_status	1	 0	 5680	1	0	 0

请求状态信息包括以下字段:

  • zone_name - 利用req_status_zone定义的分组标准。例如,按照服务器名称对请求进行分组后;
  • key - 请求按分组标准分组后的分组标识(即组名)。例如按服务器名称分组时,组名可能是localhost;
  • max_active - 该组的最大并发连接数;
  • max_bw - 该组的最大带宽;
  • traffic - 该组的总流量;
  • requests - 该组的总请求数;
  • active - 该组当前的并发连接数;
  • bandwidth - 该组当前带宽。

你可能感兴趣的:(笔记,linux,nginx)