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

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

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。web

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值对应的执行脚本,也就是脚本执行路径。sql

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

3 一些坑

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