zabbix开源监控系列三(自定义key监控nginx_status)

zabbix开源监控系列三(自定义key监控nginx_status),第1张

zabbix开源监控系列三(自定义key监控nginx_status)

需求场景

Lnmp自然环境3nginx每个nginx服务项目上的几个云虚拟主机,各自运行一个不同的网站域名,提前准备为域名做nginx。

状态监控,监控每个nginx的主题活动连接数和主题活动线程总数。

解决方案1

每个nginx服务器的主配置文件配置在状态控制模块编码端的下方。

location /ngst{   stub_status on;   access_log off;   allow 127.0.0.1;   allow xxx.xxx.xxx.xxx;   deny all;   }

引入在线文本文档是一种解决方案。

缺陷:每个zabbix代理都必须配置/etc/zabbix/etc/zabbix/zabbix_agentd.conf并重启zabbix移动客户端,比较复杂。

2.制作nginx-status的分配脚本

#!/bin/bash #HOST=`ifconfig eth0 | sed -n '/inet /{s/.*addr://;s/ .*//;p}'` HOST="192.168.103.2" PORT="8888" function active {         /usr/bin/curl "http://$HOST:$PORT/nginx-status/" 2>/dev/null| grep 'Active' | awk  '{print $NF}'         } function reading {         /usr/bin/curl "http://$HOST:$PORT/nginx-status/" 2>/dev/null| grep 'Reading' |  awk '{print $2}'        } function writing {         /usr/bin/curl "http://$HOST:$PORT/nginx-status/" 2>/dev/null| grep 'Writing' |  awk '{print $4}'        } function waiting {         /usr/bin/curl "http://$HOST:$PORT/nginx-status/" 2>/dev/null| grep 'Waiting' |  awk '{print $6}'        } function accepts {         /usr/bin/curl "http://$HOST:$PORT/nginx-status/" 2>/dev/null| awk NR==3 | awk  '{print $1}'        } function handled {         /usr/bin/curl "http://$HOST:$PORT/nginx-status/" 2>/dev/null| awk NR==3 | awk  '{print $2}'        } function requests {         /usr/bin/curl "http://$HOST:$PORT/nginx-status/" 2>/dev/null| awk NR==3 | awk  '{print $3}'        } # Run the requested function $1


和主机端口,是监控nginx的网络服务器的IP和端口号,可以立即用指令进行测试。

/usr/bin/curl"http://192.168.103.2:8888/nginx-status/"

活动连接:2

服务器接受已处理的请求

196819683907

阅读:0写作:1等待:1


3.更改zabbix_agentd.conf的配置

/etc/zabbix/zabbix_agentd.conf UserParameter=nginx.accepts,/home/zabbix/nginx-status.sh accepts UserParameter=nginx.handled,/home/zabbix/nginx-status.sh handled UserParameter=nginx.requests,/home/zabbix/nginx-status.sh requests UserParameter=nginx.connections.active,/home/zabbix/nginx-status.sh active UserParameter=nginx.connections.reading,/home/zabbix/nginx-status.sh reading UserParameter=nginx.connections.writing,/home/zabbix/nginx-status.sh writing UserParameter=nginx.connections.waiting,/home/zabbix/nginx-status.sh waiting

解决方案2

1.每个nginx服务器的主配置文件都配置有状态控制模块。

2.获取nginx服务器中nginx状态的值,并将其写入本地临时文件夹。

3.根据需要求解临时文件夹,应用UserParameter=nginx_status[*]的方法自定义键值,

4.crontab每分钟获取nginx状态值

优点:比每个zabbix手机客户端配置/etc/Zabbix/etc/Zabbix/Zabbix_agentd.conf节省时间,减少不准确性。

比率

缺陷,一分钟获取一次,略有不妥,但时间还是要看监控需求,脚本制作、开发、设计都需要时间。(其实剧本制作是很

简单)

实际的完成方式,剧本制作思路和方案二都不能马上套用。它是根据特定的自然环境,以及简单的剧本制作而成的。在这里

,这个web服务器可以立即应用主机名浏览,所以我应用了web1web2。

#!/bin/bash rm -rf /tmp/ngst/* function GETSTATUS {   for ip in {1..3}   do        curl  http://web$ip:8080/ngst >/tmp/ngst/web$ip 2>/dev/null   done } function HANDLE {    for i in {1..3}    do       cat /tmp/ngst/web$i |grep Active   |awk  '{print $1,$NF}' >>/tmp/ngst/web${i}_status       cat /tmp/ngst/web$i |grep Reading  |awk  '{print $1,$2}' >>/tmp/ngst/web${i}_status       cat /tmp/ngst/web$i |grep Writing  |awk  '{print $3,$4}' >>/tmp/ngst/web${i}_status       cat /tmp/ngst/web$i |grep Waiting  |awk  '{print $5,$6}' >>/tmp/ngst/web${i}_status       #mv /tmp/ngst/web$i.new /tmp/ngst/web$i    done } function TOTAL{   cat /tmp/ngst/*status |grep Active |awk '{total=$NF}END{print total}'>/tmp/ngst/total # 总的 Active 线程数 } GETSTATUS HANDLE TOTAL

实施后,结果如下

#ls/tmp/ngst/

总网站1网站1_状态网站2网站2_状态网站3网站3_状态

#cat/tmp/ngst/web1

活动连接:1

服务器接受已处理的请求

771600577160057354221

阅读:0写作:1等待:0

#cat/tmp/ngst/web1_状态已解决文件

活动1

阅读:0

写作:1

正在等待:0


要设置zabbix代理,只需更改配置文档并添加以下两行,默认设置zabbix自定义键即可理解。

UserParameter=nginx_status.total, cat /tmp/ngst/total UserParameter=nginx_status[*], cat /tmp/ngst/web1 |grep "$1"|awk '{print $NF}' UserParameter=nginx2_status[*], cat /tmp/ngst/web2 |grep "$1"|awk '{print $NF}' UserParameter=nginx3_status[*], cat /tmp/ngst/web3 |grep "$1"|awk '{print $NF}' #只必须写那么两行就能完成对 Active Reading 等或是别的非常值得监控。

此时,在zabbix服务器端添加以下监控。

1.创建一个模板,默认设置为会议。

2.建立监控项目

可以加一个图案,这样多条线就可以总结成一条了。

解决方案2有许多缺点。高手有更强的解决方法。请分享一下。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://www.outofmemory.cn/zz/784366.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-04
下一篇 2022-05-04

发表评论

登录后才能评论

评论列表(0条)

保存