准备工作
zabbix监控nginx,首先要确认nginx里是否有http_stub_status_module
这个模块,一般来说,这个模块是自动安装的,nginx -V
如下图:
如果你的nginx没有这个模块,请去看https://rorschachchan.github.io/2018/01/03/Nginx动态编译新的模块/ 。
然后在nginx.conf
里添加一段话:
1
2
3
4 location = /nginx-status {
stub_status on;
access_log off;
}
nginx -s reload
一下,然后在命令行输入curl http://127.0.0.1/nginx-status
,就会看到如下的界面:
这样就可以通过http_stub_status_module
检查nginx情况了!
nginx status详解
以上图的nginx status
来做例子说明一下各个数字的意思:active connections
– 活跃的连接数量accepts
— 总共处理了3832000个连接handled
— 成功创建3832000次握手requests
— 总共处理了3295877个请求reading
— 读取客户端的连接数writing
— 响应数据到客户端的数量waiting
— 开启keep-alive
的情况下,这个值等于active – (reading+writing)
, 意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接
配置监控
有了模块,还需要添加一个脚本,然后就可以获取上面的数值了,脚本如下:
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
# Method of use
HOST="127.0.0.1"
PORT="80" #这个根据实际情况填写
URL="http://${HOST}:${PORT}/nginx-status"
active() {
curl "${URL}" 2>/dev/null | grep "Active" | awk '{print $NF}'
}
reading() {
curl "${URL}" 2>/dev/null | grep "Reading" | awk '{print $2}'
}
writing() {
curl "${URL}" 2>/dev/null | grep "Writing" | awk '{print $4}'
}
waiting() {
curl "${URL}" 2>/dev/null | grep "Waiting" | awk '{print $NF}'
}
accepts() {
curl "${URL}" 2>/dev/null | awk NR==3 | awk '{print $1}'
}
handled() {
curl "${URL}" 2>/dev/null | awk NR==3 | awk '{print $2}'
}
requests() {
curl "${URL}" 2>/dev/null | awk NR==3 | awk '{print $NF}'
}
ping() {
ps -ef | grep nginx | grep -v grep -c
}
$1
然后再去zabbix_agentd.conf
里添加一句话:
1
UserParameter=nginx.status[*],/usr/local/zabbix/script/nginx_status.sh $1
然后service zabbix-agent restart
,自定义项就搞定了。
如果要导入模板,https://gitee.com/careyjike_173/zabbix 这个朋友的模板已经非常全面了,根据实际情况修改之后再导入他的xml就好,感谢前人付出!