zabbix自動發現功能實現批量web url監控
現在有大量url需要監控,形式如http://itnihao.blog.51cto.com ,要求url狀態不為200即報警。
需求詳細分析:
大量的url,且url經常變化,現在監控用的是zabbix,如果手動新增模板,會造成大量重複工作,造成人力財力的浪費,造成休息時間的浪費,得不嘗失,如果利用指令碼+mail,無法圖形呈現
解決方案:
zabbix有discovery功能,利用此功能,即可輕鬆解決此問題
zabbix客戶端配置
#########cat /etc/zabbix/zabbix_agentd.conf|grep -v "^#"|grep -v "^$"##########
##此處省略N多資訊,
Include=/etc/zabbix/zabbix_agentd.conf.d/ #配置檔案路徑
UnsafeUserParameters=1 #自定義key
###########自動發現指令碼編寫
########################cat /etc/zabbix/scripts/web_site_code_status##############
#!/bin/bash
# function:monitor tcp connect status from zabbix
# License: GPL
# mail:[email protected]
# version:1.0 date:2012-12-09
source /etc/bashrc >/dev/null 2>&1
source /etc/profile >/dev/null 2>&1
#/usr/bin/curl -o /dev/null -s -w %{http_code} http://$1/
WEB_SITE_discovery () {
WEB_SITE=($(cat WEB1.txt|grep -v "^#"))
printf '{n'
printf 't"data":[n'
for((i=0;i<${#WEB_SITE[@]};++i))
{
num=$(echo $((${#WEB_SITE[@]}-1)))
if [ "$i" != ${num} ];
then
printf "tt{ n"
printf "ttt"{#SITENAME}":"${WEB_SITE[$i]}"},n"
else
printf "tt{ n"
printf "ttt"{#SITENAME}":"${WEB_SITE[$num]}"}]}n"
fi
}
}
web_site_code () {
/usr/bin/curl -o /dev/null -s -w %{http_code} http://$1
}
case "$1" in
web_site_discovery)
WEB_SITE_discovery
;;
web_site_code)
web_site_code $2
;;
*)
echo "Usage:$0 {web_site_discovery|web_site_code [URL]}"
;;
esac
客戶端配置檔案
#########cat /etc/zabbix/zabbix_agentd.conf.d/web_site_discovery.conf ###########
UserParameter=web.site.discovery,/etc/zabbix/scripts/web_site_code_status web_site_discovery
UserParameter=web.site.code[*],/etc/zabbix/scripts/web_site_code_status web_site_code $1
域名如下
######### cat /etc/zabbix/scripts/WEB.txt###########
www.qq.com
www.baidu.com
www.sina.com.cn
測試:
zabbix_get -s 127.0.0.1 -k web.site.discovery
zabbix_get -s 127.0.0.1 -k web.site.code[www.qq.com]
此時返回狀態為200
至此,指令碼,客戶端配置檔案OK
接下來是web的新增
報警級別的設定:3個報警級別
利用以上方法,哪怕是1000個url監控,也是分分鐘的事情
總結:工欲善其事,必先利其器
此外,還可以參考我寫的文件:http://code.google.com/p/auto-task-pe/downloads/list zabbix自動發現監控http埠.pdf 如遇到問題,請先仔細閱讀這2個文件,另外附模板檔案。