51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

zabbix3.2监控nginx(一)

以下内容在zabbix客户端配置

1、查看当前nginx的status模块
nginx -V

|---|----------| | 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
location /nginx_status { stub_status on; access_log off; allow 127.0.0.1; deny all; }

|-------------|---------------------------------------------------------------------------------------| | 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
curl http://127.0.0.1/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数值提取脚本
vi /etc/zabbix/nginx_status.sh

|---|--------------------------------| | 1 | vi /etc/zabbix/nginx_status.sh |


#!/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

|-------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 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、赋予执行权限
chmod +x /etc/zabbix/nginx_status.sh

|---|--------------------------------------| | 1 | chmod +x /etc/zabbix/nginx_status.sh |

6、配置zabbix-agentd
vi /etc/zabbix/zabbix_agentd.d/userparameter_nginx.conf

|---|---------------------------------------------------------| | 1 | vi /etc/zabbix/zabbix_agentd.d/userparameter_nginx.conf |

内容如下(注意nginx_status.sh和nginx的路径是否和你当然配置的一致)
#/etc/zabbix/nginx_status.sh UserParameter=nginx.status[*],/etc/zabbix/nginx_status.sh $1 UserParameter=nginx.version,/usr/local/nginx/sbin/nginx -v

|-------|---------------------------------------------------------------------------------------------------------------------------------------------------------| | 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默认开启此项)
cat /etc/zabbix/zabbix_agentd.conf | grep Include=

|---|-----------------------------------------------------| | 1 | cat /etc/zabbix/zabbix_agentd.conf | grep Include= |

看到下面内容,表示开启
Include=/zabbix/zabbix_agentd.d/*.conf

|---|-----------------------------------------| | 1 | Include=/zabbix/zabbix_agentd.d/*.conf |

8、重启zabbix_agentd服务
/etc/init.d/zabbix-agent restart

|---|----------------------------------| | 1 | /etc/init.d/zabbix-agent restart |

客户端配置完成(注意防火墙相应端口记得开放)

服务端配置

先在zabbix server上验证能否取到nginx客户端的status值,一般情况下监控以下几项就足够了
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]'

|-----------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | 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]' |

配置监控项:






最后添加图形


赞(0)
未经允许不得转载:工具盒子 » zabbix3.2监控nginx(一)