分享一下zabbix监控nginx状态的方法,实现方式分3个部分
实现自定义监控脚本需要首先配置nginx的状态展示功能。添加nginx的server如下
server { listen 80; server_name 127.0.0.1; location /nginxstatus { stub_status on; access_log off; allow 127.0.0.1; deny all; } }
配置完nginx reload后测试下 curl -s "http://127.0.0.1/nginxstatus" 正常这样就会看到输出nginx的状态信息的。然后贴一下nginx的监控脚本
#!/bin/bash #monitor nginx status checkactive(){ curl -s "http://127.0.0.1/nginxstatus" |grep Active |awk '{print $3}' } checkaccept(){ curl -s "http://127.0.0.1/nginxstatus" |awk 'NR==3 {print $1}' } checkhandled(){ curl -s "http://127.0.0.1/nginxstatus" |awk 'NR==3 {print $2}' } checkrequest(){ curl -s "http://127.0.0.1/nginxstatus" |awk 'NR==3 {print $3}' } checkreading(){ curl -s "http://127.0.0.1/nginxstatus" |grep Reading|awk '{print $2}' } checkwriting(){ curl -s "http://127.0.0.1/nginxstatus" |grep Writing|awk '{print $4}' } checkwaiting(){ curl -s "http://127.0.0.1/nginxstatus" |grep Waiting|awk '{print $NF}' } case "$1" in active) checkactive ;; accept) checkaccept ;; handled) checkhandled ;; request) checkrequest ;; reading) checkreading ;; writing) checkwriting ;; waiting) checkwaiting ;; *) echo "Usage : $0 {active|accept|handled|request|reading|writing|waiting}" esac
脚本执行时 $1参数为active|accept|handled|request|reading|writing|waiting 根据不同的参数输出不同的监控结果。
可以这样:
vi /etc/zabbix/zabbix_agentd.d/nginx_monitor.conf
内容如下:
UserParameter=custom.nginx.monitor[*],/etc/zabbix/scripts/zabbix_minitor_nginx.sh $1
在zabbix的web界面上可以这样定义key,例如
custom.nginx.monitor[active]
custom.nginx.monitor[accept]
这样就可以监控nginx的active和accept值了,其他监控项是同样的道理。
Cloudhu 个人随笔|built by django|
沪ICP备16019452号-1