zabbix自定义监控之http和zabbix连接数

实例:监控http和mysql ESTABLISHED和TIME_WAIT连接数,当大与100的时候报警,并在web页面实时查看连接数;

1 在要监控的服务器上面编写Shell脚本,取出ESTABLISHED和TIME_WAIT连接数

#!/bin/bash
ARGS=1
if [ $# -ne "$ARGS" ];then
echo "Please input one arguement";
fi
case $1 in
EST_80)
result=`netstat -anp | grep :80 | grep EST | wc -l`
echo $result 
;;
TIME_OUT_80)
result=`netstat -anp | grep :80 | grep TIME_WAIT | wc -l`
echo $result 
;;
EST_3306)
result=`netstat -anp | grep :3306 | grep EST | wc -l`
echo $result 
;;
TIME_OUT_3306)
result=`netstat -anp | grep:3306 | grep TIME_WAIT | wc -l`
echo $result 
;;
EST_11211)
result=`netstat -anp | grep :11211 | grep EST | wc -l`
echo $result 
;;
TIME_OUT_11211)
result=`netstat -anp | grep:11211 | grep TIME_WAIT | wc -l`
echo $result 
;;
*)
echo "Usage:$0(EST_80|TIME_OUT_80|EST_3306|TIME_OUT_3306|EST_11211|TIME_OUT_11211)" 
;;
esac

这个脚本有个坑:zabbiz-agent服务运行的用户为zabbix,但是netstat的-p选项只能root用户可用。解决办法为在不影响的情况下去掉-p选项,或者给zabbix用户在netstat命令sudo权限,但记得使用命令时要加上sudo。

2 在zabbix_agentd.conf里面添加UserParament,格式如下,对于zabbix来说,脚本其实就是一个插件。

UnsafeUserParameters=1       ##允许脚本中出现特殊字符
UserParameter=checkservices.sh[*],/etc/zabbix/scripts/checkservices.sh $1

UserParameter=key,command
前面是key值,也就是在web端添加监控脚本时的key值,command就是该key值对应的执行脚本,也就是脚本执行路径。

重启agent服务器,然后在zabbix-server上用zabbix-get命令测试一下key是否可以取到值。
这里写图片描述

3 一些坑

这里写图片描述
当出现这个错误时,请注意你脚本中使用的命令是否对zabbix用户有一定的限制;
解决方法:为zabbix用户设置sudo权限,并修改命令添加sudo。
这里写图片描述
允许脚本中出现一些特殊字符,这项看情况打开。默认是不允许的。

猜你喜欢

转载自blog.csdn.net/qq_36462472/article/details/80420933