现在有大量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:itnihao@qq.com
# 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
![](https://app.yinxiang.com/shard/s42/share/b9f7-s42/res/6510e430-d14e-4768-af54-45b8273bbcdb.jpg)
zabbix_get -s 127.0.0.1 -k web.site.code[www.qq.com]
此时返回状态为200
至此,脚本,客户端配置文件OK
接下来是web的添加
![](https://app.yinxiang.com/shard/s42/share/b9f7-s42/res/35578dd1-8785-4acb-8e4f-2994578b5e92.jpg)
![](https://app.yinxiang.com/shard/s42/share/b9f7-s42/res/ffc0cd5e-7b8c-4011-a407-9ab6de9fe571.jpg)
![](https://app.yinxiang.com/shard/s42/share/b9f7-s42/res/3d4fdc52-9627-4cfb-9c26-02251f68e982.jpg)
![](https://app.yinxiang.com/shard/s42/share/b9f7-s42/res/d7e1a20e-78e6-4208-bc5d-be84447f6586.jpg)
![](https://app.yinxiang.com/shard/s42/share/b9f7-s42/res/65a8825e-376c-43ef-8b35-d39102c2d9fa.jpg)
![](https://app.yinxiang.com/shard/s42/share/b9f7-s42/res/34212bf6-464f-4075-9d64-23b0d63c7f83.jpg)
![](https://app.yinxiang.com/shard/s42/share/b9f7-s42/res/36da32b1-1619-4873-a4ee-e88fee603f25.jpg)
![](https://app.yinxiang.com/shard/s42/share/b9f7-s42/res/c8ac4af5-1c3c-4d9b-b954-da20cf43c036.jpg)
报警级别的设置:3个报警级别
![](https://app.yinxiang.com/shard/s42/share/b9f7-s42/res/437ce80b-88ec-486f-9a26-877387b657b2.jpg)
![](https://app.yinxiang.com/shard/s42/share/b9f7-s42/res/ca056e15-6844-4be1-99f1-650d9730537d.jpg)
利用以上方法,哪怕是1000个url监控,也是分分钟的事情
总结:工欲善其事,必先利其器
参考文档:https://www.zabbix.com/documentation/2.0/manual/discovery/low_level_discovery
此外,还可以参考我写的文档:http://code.google.com/p/auto-task-pe/downloads/list zabbix自动发现监控http端口.pdf 如遇到问题,请先仔细阅读这2个文档,另外附模板文件。