以下内容在zabbix客户端配置
1、查看当前nginx的status模块
1 |
nginx -V |
查看nginx是否将--with-http_stub_status_module编译进来
可以看到我这里已经将--with-http_stub_status_module编译进来了
2、启用nginx的status模块
在server中配置,如果你使用的vhost,可以在server_name中增加一个127.0.0.1
1 2 3 4 5 6 |
location /nginx_status { stub_status on; access_log off; allow 127.0.0.1; deny all; } |
添加完成后nginx记得reload下
3、查看nginx_status
1 |
curl http://127.0.0.1/nginx_status |
字段及含义
Active connections 当前活动的客户端连接数,包含处于等待状态的连接
accepts 总共接收了131083964个客户端连接
handled 总共处理完成131083964个连接,这个值通常与accepts相同,如果不同说明nginx性能出现瓶颈
requests 总共处理了190479730个客户端请求
reading 正在读取客户端请求头信息的数量,读取后马上进入writing的状态
writing 正在发送响应报文到客户端的数量,时间较长
waiting 处于闲置状态正等待客户端发送请求的连接数active-(reading+writing)
当用户请求连接Nginx服务器时,accepts会增加1个,当服务器处理该连接请求时,handled同样会增加1个,正常情况下accepts和handled是相等的。
官方说明地址:http://nginx.org/en/docs/http/ngx_http_stub_status_module.html
4、在/etc/zabbix/创建status数值提取脚本
1 |
vi /etc/zabbix/nginx_status.sh |
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 |
#!/bin/bash ip=127.0.0.1 function ping() { /sbin/pidof nginx | wc -l } function active() { /usr/bin/curl http://$ip/nginx_status 2>/dev/null | sed -n '1p' | awk '{print $NF}' } function accepts() { /usr/bin/curl http://$ip/nginx_status 2>/dev/null | sed -n '3p' | awk '{print $1}' } function handled() { /usr/bin/curl http://$ip/nginx_status 2>/dev/null | sed -n '3p' | awk '{print $2}' } function requests() { /usr/bin/curl http://$ip/nginx_status 2>/dev/null | sed -n '3p' | awk '{print $3}' } function reading() { /usr/bin/curl http://$ip/nginx_status 2>/dev/null | sed -n '4p' | awk '{print $2}' } function writing() { /usr/bin/curl http://$ip/nginx_status 2>/dev/null | sed -n '4p' | awk '{print $4}' } function waiting() { /usr/bin/curl http://$ip/nginx_status 2>/dev/null | sed -n '4p' | awk '{print $6}' } $1 |
5、赋予执行权限
1 |
chmod +x /etc/zabbix/nginx_status.sh |
6、配置zabbix-agentd
1 |
vi /etc/zabbix/zabbix_agentd.d/userparameter_nginx.conf |
内容如下(注意nginx_status.sh和nginx的路径是否和你当然配置的一致)
1 2 3 |
#/etc/zabbix/nginx_status.sh UserParameter=nginx.status[*],/etc/zabbix/nginx_status.sh $1 UserParameter=nginx.version,/usr/local/nginx/sbin/nginx -v |
7、确认zabbix-agentd.conf的Include路径(yum装的agent默认开启此项)
1 |
cat /etc/zabbix/zabbix_agentd.conf | grep Include= |
看到下面内容,表示开启
1 |
Include=/zabbix/zabbix_agentd.d/*.conf |
8、重启zabbix_agentd服务
1 |
/etc/init.d/zabbix-agent restart |
客户端配置完成(注意防火墙相应端口记得开放)
服务端配置
先在zabbix server上验证能否取到nginx客户端的status值,一般情况下监控以下几项就足够了
1 2 3 4 5 |
zabbix_get -s 客户端IP -k 'nginx.status[ping]' zabbix_get -s 客户端IP -k 'nginx.status[active]' zabbix_get -s 客户端IP -k 'nginx.status[reading]' zabbix_get -s 客户端IP -k 'nginx.status[writing]' zabbix_get -s 客户端IP -k 'nginx.status[waiting]' |
配置监控项:
最后添加图形
原文链接:zabbix3.2监控nginx(一),转载请注明来源!
拜个早年
拜个早年