通过Zabbix批量监控 web url,脚本查看其它博友的,测试完全ok。自定义的key需要一台服务器部署,这边是放在zabbix_server端。
cd /etc/zabbix/scripts/
cat web_site_code_status.sh
#!/bin/bash
# function:monitor tcp connect status from zabbix
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 /etc/zabbix/scripts/WEB.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 "\t\t{ \n"
printf "\t\t\t\"{#SITENAME}\":\"${WEB_SITE[$i]}\"},\n"
else
printf "\t\t{ \n"
printf "\t\t\t\"{#SITENAME}\":\"${WEB_SITE[$num]}\"}]}\n"
fi
}
}
web_site_code () {
/usr/bin/curl -o /dev/null -s -w %{http_code} https://$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
chmod +x web_site_code_status.sh
注意:如果是监控http 改https://$1 为 http://$1即可,这里是监控https
vim /etc/zabbix/zabbix_agentd.conf
UnsafeUserParameters=1
UserParameter=web.site.discovery,/etc/zabbix/scripts/web_site_code_status.sh web_site_discovery
UserParameter=web.site.code[*],/etc/zabbix/scripts/web_site_code_status.sh web_site_code $1
脚本调用的web url文件,竖列写:
vim /etc/zabbix/scripts/WEB.txt
www.baidu.com
重启zabbix_agentd服务:
/etc/init.d/zabbix_agentd restart
通过zabbix_get去获取自定义的key:
/usr/local/zabbix/bin/zabbix_get -p 10050 -s 127.0.0.1 -k web.site.discovery
{
"data":[
{
"{#SITENAME}":"www.baidu.com"}]}
/usr/local/zabbix/bin/zabbix_get -p 10050 -s 127.0.0.1 -k web.site.code[www.baidu.com]
200
创建发现规则:
配置-主机-自动发现规则-创建发现规则
过滤器配置:
监控项原型:
配置-主机-zabbix-server-监控项原型-创建监控项原型
#注意自定义的键值只能手动输入,不能选择
触发器:
配置-主机-zabbix-server-触发器类型-创建触发器原型
注意:{#SITENAME} 大括号里面有个#号
##注意有个问题:
在WEB.txt中删除url,被删除的url并没有在zabbix中被删除还是会报警,百思不得其解,最后通过先删除WEB.txt中的网址加zabbix数据库中items表中相应的key数据。问题得以解决