1. 程式人生 > >zabbix自定義監控之http和zabbix連線數

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。
這裡寫圖片描述
允許指令碼中出現一些特殊字元,這項看情況開啟。預設是不允許的。