Nginx Reqstat 模块监控
部署步骤
创建nginx用户 useradd nginx
1编译安装nginx
2下载reqstat模块 wget https:///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:///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 - 该组当前带宽。