Zabbix实战-简易教程--WEB类--Nginx

作者:@skyflask
转载本文请注明出处:https://www.cnblogs.com/skyflask/p/7622101.html


目录

一、开启Nginx status状态
二、编写获取Nginx status的脚本
三、制作Nginx模板
四、模板上套
五、总结

一、开启Nginx status状态

1、在默认主机里面加上location添加ngx_status

如下操作:

1
2
3
4
5
6
7
8
9
10
server {
        listen       127.0.0.1:8080;
        server_name  127.0.0.1;
        access_log off;
        location /nginxstatus {
             stub_status on;
             access_log off;
             allow 127.0.0.1;
             deny all;
        }

 

2、重启nginx服务,service nginx restart,查看取值是否正常。

curl -s "http://127.0.0.1:8080/nginxstatus"

1
2
3
4
Active connections: 37
server accepts handled requests
 7197043 7197043 67343248
Reading: 0 Writing: 1 Waiting: 36

 3、nginx status详解

1
2
3
4
5
active connections – 活跃的连接数量
server accepts handled requests — 总共处理了7197043个连接 , 成功创建7197043次握手, 总共处理了67343248个请求
Reading — 读取客户端的连接数.
Writing — 响应数据到客户端的数量
Waiting — 开启 keep-alive 的情况下,这个值等于 active – (reading+writing), 意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接.

  

二、编写获取Nginx status的脚本

在agent上编写监控脚本,其实就是获取刚才以上nginxstatus的值:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#!/bin/bash
 
function active {
                curl -s "http://127.0.0.1:8080/nginxstatus" | grep 'Active' | awk '{print $3}'
}
function reading {
                curl -s "http://127.0.0.1:8080/nginxstatus" | grep 'Reading' | awk '{print $2}'
}
function writing {
                curl -s "http://127.0.0.1:8080/nginxstatus" | grep 'Writing' | awk '{print $4}'
}
function waiting {
                curl -s "http://127.0.0.1:8080/nginxstatus" | grep 'Waiting' | awk '{print $6}'
}
function accepts {
                curl -s "http://127.0.0.1:8080/nginxstatus" | awk NR==3 | awk '{print $1}'
}
function handled {
                curl -s "http://127.0.0.1:8080/nginxstatus" | awk NR==3 | awk '{print $2}'
}
function requests {
                curl -s "http://127.0.0.1:8080/nginxstatus" | awk NR==3 | awk '{print $3}'
}
 
 
 
case "$1" in
active)
active
;;
reading)
reading
;;
writing)
writing
;;
waiting)
waiting
;;
accepts)
accepts
;;
handled)
handled
;;
requests)
requests
;;
*)
 echo "Usage: $0 {active|reading|writing|waiting|accepts|handled|requests}"
esac

 

Agent端写入自定义key:

1
UserParameter=nginx[*], /bin/bash /etc/zabbix/externalscripts/monitor-nginx.sh $1

  

三、制作Nginx模板

根据上面的监控项制作好模板,模板已经上传至Github:https://github.com/loveqx/zabbix-doc/tree/master/zabbix-scripts/zabbix-template-nginx

模板包括的监控项如下:

 

四、模板上套

主机(Agent)套上模板即可。

 

效果如下:

至此,Nginx监控完成。

五、总结

以上就是监控Nginx的整个过程,虽然只是一个开端,但是,后续监控其他服务或应用都是类似的流程。聪明的你,可以依葫芦画瓢。

1、通过方法或手段获取需要监控的监控项

     通过脚本或LLD获取监控项或监控项类(通过lld发现的),解释一下这里为什么说是监控项类,因为他是一个监控项的抽象。比如,磁盘类、网卡类,而且他们具有同样是属性。

2、Agent端添加自定义key

3、制作模板

4、Agent套用模板

最后附上监控Nginx需要的模板和脚本:

Nginx监控github地址:

脚本:https://github.com/loveqx/zabbix-doc/blob/master/zabbix-scripts/zabbix-template-nginx/monitor-nginx.sh

模板:https://github.com/loveqx/zabbix-doc/blob/master/zabbix-scripts/zabbix-template-nginx/Template%20App%20For%20XSJ%20Web%20Nginx.xml

 

posted @   skyflask  阅读(870)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
点击右上角即可分享
微信分享提示