nginx-监控(基础)-10
Posted 奇漠
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx-监控(基础)-10相关的知识,希望对你有一定的参考价值。
nginx的基础监控
- 进程监控
- 端口监控
注意:这两个是必须要加在zabbix监控,加触发器有问题及时告警。
web服务器NGINX以其高性能与抗并发能力越来越多的被用户使用,nginx提供了ngx_http_stub_status_module,ngx_http_request_module模块,这个模块提供了基础的nginx监控功能
监控的主要指标
我们需要对一下主要的指标进行监控:
1、基本活跃指标
accepts(接受)、handled(已处理)、request(请求数)是一直在增加的计数器。Active(活跃)
2、每秒请求数——QPS
通过持续的QPS监控,可以立刻发现是否被恶意攻击或对服务的可用性进行评估。虽然当问题发生时,通过QPS不能定位到确切问题的位置,但是他却可以在第一时间提醒你环境可能出问题了。
3、服务器错误率
通过监控固定时间间隔内的错误代码(4xx代码表示客户端错误,5xx表示服务器端错误),可以了解到客户端收到的结果是否是正确的,错误率突然的飙升很可能是你的网站漏洞发出的信号
如果你希望通过access.log分析错误率,那么你就要配置nginx的日志模块,让nginx将状态码写入访问日志
指标的收集
nginx stub status监控
模块安装
先用命令查看是否已安装这个模块
# -V大写会显示版本号和模块等信息、v小写仅显示版本信息
[root@localhost ~]# nginx -V
如果没有此模块,需要重新安装,编译命令如下:
./configure –with-http_stub_status_module
需要在nginx的配置文件添加这个模块才能使用,配置如下:
server
listen 80;
server_name localhost;
location /nginx-status
stub_status on;
access_log on;
nginx状态查看
配置完成后重新加载nginx'配置文件,在浏览器输入192.168.242.138/nginx-status查看,或者用curl localhost/nginx-status,显示信息如下:
stub_status参数说明
正常情况下waiting数量是比较多的,并不是说性能差。如果reading+writing数量比较多,说明服务器并发有问题。
Active connections:2 #当前nginx处理请求的数目(活跃的连接数)
server accepts handled requests 26 26 48
nginx总共处理了26个连接,成功创建26次握手,也就是成功的连接数connection. 总共处理了48个请求
失败连接=(总连接数-成功连接数)(相等表示中间没有失败的)
Nginx Reqstat 模块监控
模块安装
可以监控Nginx的性能、主要监控、连接数、请求数、各种响应码范围的请求数、输入输出流量、rt、upstream访问等。现在通过ngx_req_status_module
能够统计Nginx中请求的状态信息。需要安装第三方模块。
描述:
- ngx_http_reqstat_module 模块
- 这个模块计算定义的变量,根据变量值分别统计 nginx 的运行状况。
- 可以监视的运行状况有:连接数、请求数、各种响应码范围的请求数、输入输出流量、rt、upstream访问等。
- 可以指定获取所有监控结果或者一部分监控结果。
- 利用变量添加自定义监控状态。总的监控状态最大个数为50个。
- 回收过期的监控数据。
- 设置输出格式
- 跟踪请求,不受内部跳转的影响
- 不要使用与响应相关的变量作为条件,比如"$status"
模块安装
1.下载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
2.由于原先已有nginx,所以不能执行make install
否则会覆盖掉以前的配置文件及内容
[root@localhost nginx-1.16.0]# make
3.更换二进制文件
[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
如果发现编译的配置文件有变化就成功了!
开启req_stat监控,需要在配置文件的http块中添加这个模块才能使用
[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
在当前位置启用请求状态处理程序
浏览器访问查看nginx状态
请求状态信息包括以下字段:
- zone_name - 利用req_status_zone定义的分组标准。例如,按照服务器名称对请求进行分组后;
- key - 请求按分组标准分组后的分组标识(即组名)。例如按服务器名称分组时,组名可能是localhost;
- max_active - 该组的最大并发连接数;
- max_bw - 该组的最大带宽;
- traffic - 该组的总流量;
- requests - 该组的总请求数;
- active - 该组当前的并发连接数;
- bandwidth - 该组当前带宽。
Nginx系列——可用性监控进阶
Advanced Activity Monitoring
可用性监控进阶
Enable NGINX Open Source Stub Status
启用Nginx基础监控
location /stub_status {
stub_status;
allow 127.0.0.1;
deny all;
# Set IP restrictions as appropriate
}
Test your configuration by making a request for the status:
$ curl localhost/stub_status
Active connections: 1
server accepts handled requests
1 1 1
Reading: 0 Writing: 1 Waiting: 0
以上是关于nginx-监控(基础)-10的主要内容,如果未能解决你的问题,请参考以下文章