nginx和php-fpm一样内建了一个状态页,利用状态页得到的各项参数,使用zabbix实现对nginx状态监控
nginx配置
在配置的server内添加location
location /status {
stub_status on;
access_log off;
allow 127.0.0.1;
deny all;
}
需要安装插件http_stub_status_module,编译安装即:
./configure --with-http_stub_status_module
nginx status数值的含义说明
字段 | 含义 |
---|---|
Active connections | 当前的活动连接数,包含处于等待状态的连接 |
accepts | 接收到的客户端发来的连接数 |
handled | 已经处理完成的连接数,一般情况下它和accepts值相同,如果不同说明nginx性能出现瓶颈 |
requests | 客户端请求总数 |
reading | 正在读取请求头信息的连接数 |
writing | 正在发送响应报文的连接数 |
waiting | 处于闲置状态正等待客户端发送请求的连接数 |
浏览器或者curl指令查看nginx status:
[root@localhost ~]# curl http://localhost/status
Active connections: 1
server accepts handled requests
201 201 1630
Reading: 0 Writing: 1 Waiting: 0
监控nginx
zabbix agent客户端脚本
/etc/zabbix/script/nginx_status.sh
#!/bin/bash
SERVER='127.0.0.1:8080'
case $1 in
ping)
/usr/sbin/pidof nginx | wc -l
;;
active)
/usr/bin/curl "http://$SERVER/status" 2>/dev/null | grep 'Active' | awk '{print $NF}'
;;
reading)
/usr/bin/curl "http://$SERVER/status" 2>/dev/null | grep 'Reading' | awk '{print $2}'
;;
writing)
/usr/bin/curl "http://$SERVER/status" 2>/dev/null | grep 'Writing' | awk '{print $4}'
;;
waiting)
/usr/bin/curl "http://$SERVER/status" 2>/dev/null | grep 'Waiting' | awk '{print $6}'
;;
accepts)
/usr/bin/curl "http://$SERVER/status" 2>/dev/null | awk NR==3 | awk '{print $1}'
;;
handled)
/usr/bin/curl "http://$SERVER/status" 2>/dev/null | awk NR==3 | awk '{print $2}'
;;
requests)
/usr/bin/curl "http://$SERVER/status" 2>/dev/null | awk NR==3 | awk '{print $3}'
;;
*)
echo "Usage: %0 {active | reading | writing| waiting| accepts | handled | requests}"
;;
esac
zabbix agent客户端配置
/etc/zabbix/zabbix_agentd.d/userparameter_nginx.conf
#Monitor Nginx status
UserParameter=nginx.status[*],/etc/zabbix/script/nginx_status.sh $1
zabbix web端配置
配置请参考 zabbix自动发现规则监控redis(主从哨兵)
下载:nginx监控模板