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 - 该组当前带宽。

猜你喜欢

转载自blog.csdn.net/qq_50660509/article/details/129810409