需求
抓取有几项指标需要监控下,提供了页面可以获取到带抓取的数值,根据一些页面获取的值判断大于10W报警,一些页面时间和当前时间相差30分钟报警
编写检测数量脚本
#网站curl -s 格式为{"date":"2018-04-18 14:35:44:109","media":"网络"}
#!/bin/bash
url_num=(
网络入口待抓取任务数量-http://xxxxxx
模板任务待抓取任务数量-http://xxxxxx
论坛普通入口待抓取任务数量-http://xxxxxx
论坛搜索入口待抓取数量-http://xxxxxx
)
URL_NUM(){
i=$1
arr=(${i//-/ } #分割变量i,以'-'为单位,在前面我添加了'-'用来分割名称和页面,主要是为了将名称和页面的变量都取出来输出使用
num=`curl -s "${arr[1]}" |awk -F ':|,' '{print $2}'`
if [ "$num" -ge 100000 ];then
wl=`echo "${arr[0]}为$num大于100000报警"`
else
wl=`echo ${arr[0]}为$num正常`
fi
}
case "$1" in
wlrk)
URL_NUM "${url_num[0]}"
echo $wl
;;
mbrw)
URL_NUM "${url_num[1]}"
echo $wl
;;
ltpt)
URL_NUM "${url_num[2]}"
echo $wl
;;
ltss)
URL_NUM "${url_num[3]}"
echo $wl
esac
#z这里使用的case是为了让zabbix传递变量使用的,就可以一个脚本多次使用,不用费劲的创建多个脚本
#脚本执行结果
[root@zabbix script]# zabbix_get -s 192.168.0.231 -k script.zhuaqu[mbrw]
模板任务待抓取任务数量为472274大于100000报警
编写检测时间的脚本
# curl -s 结果为{"date":"2018-04-18 14:36:52:720","media":"网络"}
#!/bin/bash
url_time=(
网络-http://xxxx
报刊-http://xxx
论坛-http://xxx
客户端-http://xxx
微博-http://xxx
微信-http://xxx
视频-http://xxx
博客-http://xxx
)
URL_TIME(){
i=$1
arr=(${1//-/ })
zq_DATE=`curl -s ${arr[1]}|awk -F '"' '{print $4}'|sed -r 's/(.*)\:.../\1/'`
#sed -r 's/(.*)\:.../\1/' 将前面的curl -s结果的最后面的 :720 替换为空 方便后面转换为时间戳 进行时间差计算
now_DATE=`date "+%Y-%m-%d %T"`
zq_DATE1=`date -d "$zq_DATE" +%s`
now_DATE=`date -d "$now_DATE" +%s`
time=$(((now_DATE - zq_DATE1)))
if [ "${arr[0]}" = "报刊" ];then
if [ $time -ge 7200 ];then
wl=`echo "${arr[0]}更新时间为"$zq_DATE",超过2小时没有更新请检查"`
else
wl=`echo "${arr[0]}更新时间为"$zq_DATE"正常"`
fi
elif [ $time -ge 1800 ];then
wl=`echo "${arr[0]}更新时间为"$zq_DATE",超过30分钟没有更新请检查"`
else
wl=`echo "${arr[0]}更新时间为"$zq_DATE"正常"`
fi
}
case "$1" in
wl)
URL_TIME "${url_time[0]}"
echo $wl
;;
bk)
URL_TIME "${url_time[1]}"
echo $wl
;;
lt)
URL_TIME "${url_time[2]}"
echo $wl
;;
khd)
URL_TIME "${url_time[3]}"
echo $wl
;;
wb)
URL_TIME "${url_time[4]}"
echo $wl
;;
wx)
URL_TIME "${url_time[5]}"
echo $wl
;;
sp)
URL_TIME "${url_time[6]}"
echo $wl
;;
bk)
URL_TIME "${url_time[7]}"
echo $wl
;;
esac
配置zabbix客户端
这里上传到zabbix客户端,位置在/etc/zabbix/script/zhuaqu_num.sh 和 zhuaqu_date.sh
vim /etc/zabbix/zabbix_agentd.d/zhuaqu.conf
UserParameter=script.zhuaqu[*],/etc/zabbix/script/zhuaqu_num.sh $1
UserParameter=script.zhuaqu_date[*],/etc/zabbix/script/zhuaqu_date.sh $1
#这里的script.zhuaqu[*]的作用是创建监控项时填写的参数,$1就是传入第一个参数
创建zabbix模板
如下图所示
![](https://img.haomeiwen.com/i11155832/d0eb3124a23493d9.png)
创建监控项
健值要手动输入,后面的ltpt就是对应前面脚本的case选项
数据类型为文字,因为传回的值为文本格式,如下面所示添加其他的监控项
![](https://img.haomeiwen.com/i11155832/6e08ebf9052f453b.png)
创建触发器
选择如果最后的返回结果包含有报警,则N为1进行报警。关于触发器的名称是使用监控项的返回值作为触发器名称,关于触发器的详细信息可以参考这里
![](https://img.haomeiwen.com/i11155832/f6030c4eacfb5146.png)
![](https://img.haomeiwen.com/i11155832/da96c804e7b3cc5f.png)
网友评论