SIMONDOMAIN 2020-05-09
需求:为了防止业务假死,我们需要对服务hs页面进行监控
前提:项目标准化程序较高,已经规划/hs页面的使用
说明:ZABBIX本身也有web监控项,但是不够灵活,每次配置一个域名都需要一连串配置才可以,在微服务站点多切变化频繁时管理将会十分低效
1、zabbix通过脚本或者其他形式首先发现识别json域名列表进行引用
2、当zabbix自动发现完成,将发现的值配置为变量,将变量配置为item中
要点:自动发现需要对发现的内容json化,以便于ZABBIX识别。
UserParameter=webhs.discovery,/bin/cat /etc/zabbix/scripts/domain.list ##用于获取域名列表 UserParameter=webhs[*],/bin/bash /etc/zabbix/scripts/webhs.sh $1 ##用于探测域名是否正常
## 这里的json文件请务必保证格式,建议编写后在http://json.cn/进行测试 ## 获取域名的形式可以通过脚本调CMDB接口获得,也可以自己编写json文件,通过cat命令调用,但输出请严格保证json ## json文件位置与配置文件中cat调用的相对应 [ scripts]# cat domain.list { "data": [ {"{#DOMAIN}":"userinfo.prod.xxxx.com"}, {"{#DOMAIN}":"gateway.xxxx.com"}, {"{#DOMAIN}":"shenjing.xxxx.com"}, {"{#DOMAIN}":"gatewayadmin.prod.xxxx.com"}, ...省略很多,大概一百多个 {"{#DOMAIN}":"ppdquery.prod.xxxx.com"} ] }
[ ~]# zabbix_get -s 10.3.2.105 -k webhs.discovery { "data": [ {"{#DOMAIN}":"userinfo.prod.tarsapi.com"}, {"{#DOMAIN}":"gateway.tarsplus.com"}, {"{#DOMAIN}":"shenjing.tarsplus.com"}, {"{#DOMAIN}":"gatewayadmin.prod.tarsapi.com"}, ...省略很多,大概一百多个 {"{#DOMAIN}":"ppdquery.prod.xxxx.com"} ] }
域名列表可以拿到后配置检测健康状态的脚本。原理就是zabbix拿到域名,然后将域名通过位置变量传递给检测脚本执行得到返回值(失败返回1,成功返回0),zabbix服务器根据返回值制定触发器
[ scripts]# vim webhs.sh ## 保证zabbix有可执行x权限 #!/bin/bash result=`curl -I -m 10 -o /dev/null -s -w %{http_code} ${1}/hs` ##${1}位置变量 if [ $result -eq 200 ];then echo "0" elif [ $result -eq 302 ];then echo "0" elif [ $result -eq 301 ];then echo "0" else echo "1" fi
一切准备就绪,新建ZABBIX模板(Templates)并配置自动发现(Discovery)