zabbix监控nginx状态信息
1、开启nginx状态监控页
# vim /etc/nginx/nginx.conf http{ ... server { .... location /status { stub_status on; allow 127.0.0.1; #只允许本机访问监测页 deny all; } ... } ... }
2、nginx状态页说明
# curl 127.0.0.1/status Active connections: 1 server accepts handled requests 64 64 128
Reading: 0 Writing: 1 Waiting: 0
第一行,active connections – 当前 Nginx 正处理的活动连接数。后面脚本中用active来代指
第三行第一个值64,表示总共处理了多少个连接。后面脚本用accepted来代指
第三行第二个值64,表示成功创建多少次握手 (和第一个值相同,证明中间没有失败的 )。后面脚本用handled来代指
第三行第三个值128,表示总共处理了多少次请求(平均每次握手处理了128/64=2个请求)。后面脚本用requests来代指
第四行Reading,表示nginx读取到客户端的 Header 信息数。后面脚本用reading来代指
第四行Writing,表示nginx返回给客户端的 Header 信息数。后面脚本用writing来代指
第四行Waiting,表示开启 keep-alive 的情况下,这个值等于 active – (reading + writing), 意思就是 Nginx 已经处理完正在等候下一次请求指令的驻留连接。后面脚本用waiting来代指
3、编写监测nginx的shell脚本
# vim /etc/zabbix/zabbix_agentd.d/check_nginx.sh #!/bin/bash case $1 in active) /usr/bin/curl -s "http://127.0.0.1:$1/status" | awk '/^Active/ {print $NF}' ;; reading) /usr/bin/curl -s "http://127.0.0.1:$1/status" | grep 'Reading' | cut -d" " -f2 ;; writing) /usr/bin/curl -s "http://127.0.0.1:$1/status" | grep 'Writing' | cut -d" " -f4 ;; waiting) /usr/bin/curl -s "http://127.0.0.1:$1/status" | grep 'Waiting' | cut -d" " -f6 ;; accepted) /usr/bin/curl -s "http://127.0.0.1:$1/status" | awk '/^[ \t]+[0-9]+[ \t]+[0-9]+[ \t]+[0-9]+/ {print $1}' ;; handled) /usr/bin/curl -s "http://127.0.0.1:$1/status" | awk '/^[ \t]+[0-9]+[ \t]+[0-9]+[ \t]+[0-9]+/ {print $2}' ;; requests) /usr/bin/curl -s "http://127.0.0.1:$1/status" | awk '/^[ \t]+[0-9]+[ \t]+[0-9]+[ \t]+[0-9]+/ {print $3}' ;; *) echo 'Error' esac
4、编写zabbix-agent的自定义监控项
# vim /etc/zabbix/zabbix_agentd.d/nginx_satus.conf
UserParameter=nginx.status[*],/bin/bash /etc/zabbix/zabbix_agentd.d/check_nginx.sh $1
重启zabbix-agent服务
# systemctl restart zabbix-agent
5、在Zabbix-server端测试
# zabbix_get -s 192.168.1.200 -k nginx.status[active]
# zabbix_get -s 192.168.1.200 -k nginx.status[handled]
。。。略