注意: 这两个是必须要加在zabbix监控,加触发器有问题及时告警。
web 服务器 nginx 以其高性能与抗并发能力越来越多的被用户使用
Nginx 提供了 ngx_http_stub_status_module,ngx_http_reqstat_module模块,这个模块提供了基本的监控功能
我们需要对以下主要的指标进行监控:
Accepts(接受)、Handled(已处理)、Requests(请求数)是一直在增加的计数器。Active(活跃)
通过持续的 QPS 监控,可以立刻发现是否被恶意攻击或对服务的可用性进行评估。虽然当问题发生时,通过 QPS 不能定位到确切问题的位置,但是他却可以在第一时间提醒你环境可能出问题了
通过监控固定时间间隔内的错误代码(4XX代码表示客户端错误,5XX代码表示服务器端错误),可以了解到客户端收到的结果是否是正确的错误率突然的飙升很可能是你的网站漏洞发出的信号
如果你希望通过 access log 分析错误率,那么你需要配置 nginx 的日志模块,让 nginx 将响应码写入访问日志
通过在编译时加入 nginx
的 ngx_http_stub_status_module
模块我们可以实时监控以下基本的指标:
server {
listen 80;
server_name localhost;
location /nginx-status {
stub_status on;
access_log on;
}
}
2、Nginx 状态查看
配置完成后在浏览器中输入http://196.196.196.130/nginx-status 查看
(或者用 `curl localhost/nginx-status),显示信息如下:
3、Stub Status 参数说明
正常情况下waiting数量是比较多的,并不能说明性能差。如果reading+writing数量比较多说明服务并发有问题。
Active connections:2 #当前nginx处理请求的数目(活跃的连接数)
server accepts handled requests
26 26 48
nginx总共处理了26个连接,成功创建26次握手,也就是成功的连接数connection. 总共处理了48个请求
失败连接=(总连接数-成功连接数)(相等表示中间没有失败的),
描述
这个模块讲一下,我用的是nginx1.16版本的 才兼容, 1.19版本以上的做不了这个模块
ngx_http_reqstat_module 模块
这个模块计算定义的变量,根据变量值分别统计 nginx 的运行状况。
可以监视的运行状况有:连接数、请求数、各种响应码范围的请求数、输入输出流量、rt、upstream访问等。
可以指定获取所有监控结果或者一部分监控结果。
利用变量添加自定义监控状态。总的监控状态最大个数为50个。
回收过期的监控数据。
设置输出格式
跟踪请求,不受内部跳转的影响
不要使用与响应相关的变量作为条件,比如"$status"
现在通过ngx_req_status_module
能够统计Nginx中请求的状态信息。需要安装第三方模块
tengine官方说req-status模块默认安装。但是并没有。从github引入第三方模块解决该问题
yum与编译安装的nginx扩展模块安装:
步骤; yum install -y unzip 下载解压工具
步骤;ngx_req_status_module 下载模块, 这是第三方模块需要添加
步骤; wget https://github.com/zls0424/ngx_req_status/archive/master.zip -O ngx_req_status.zip
步骤;unzip ngx_req_status.zip 解压
步骤; cp -r ngx_req_status-master/ /usr/local/ #与解压的nginx在同一级目录下
步骤; cd /usr/local/nginx-1.16.0/
步骤; yum -y install patch.x86_64 安装这个补丁,因为这个模块已经不支持了需要安装补丁
步骤; patch -p1 < …/ngx_req_status-master/write_filter-1.7.11.patch 这里提示提示先进入status-master/这个目录下
步骤; ./configure 添加上原来的参数 --add-module=/usr/local/ngx_req_status-master
步骤; make 由于原先已有nginx,所以不能执行make install,否则会覆盖掉以前的配置文件及内容
步骤; mv /usr/sbin/nginx /usr/sbin/nginx_bak
步骤; cp objs/nginx /usr/sbin/
步骤;systemctl restart nginx
步骤; nginx -V
如果发现编译的配置文件有变化就成功了!
配置如下:
req_status_zone server_name $server_name 256k;
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 {
listen 80;
server_name localhost;
location /req-status {
req_status_show on;
}
}
指令介绍
请求状态信息包括以下字段:
nginx access log 分析
nginx 的 access log 中可以记录很多有价值的信息,通过分析 access log,可以收集到很多指标
1.制作nginx的日志切割,每天凌晨切割并压缩。
工作常用(面试题笔试):
1.根据访问IP统计UV
awk '{print $1}' access.log|sort | uniq -c |wc -l
2.统计访问URL统计PV
awk '{print $7}' access.log|wc -l
3.查询访问最频繁的URL
awk '{print $7}' access.log|sort | uniq -c |sort -n -k 1 -r|more
4.查询访问最频繁的IP
awk '{print $1}' access.log|sort | uniq -c |sort -n -k 1 -r|more
5.查询访问最频繁的前10的IP
awk '{print $1}' access.log|sort | uniq -c |sort -n -k 1 -r|head -n 10