标签:传递 机制 pts domain -o echo over pre 建议
ZABBIX结合自动发现机制实现站点/hs页面健康监控需求:为了防止业务假死,我们需要对服务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调用的相对应
[root@mgt-elastalert-server1 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"}
]
}
[root@mgt-zabbix-server1 ~]# 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服务器根据返回值制定触发器
[root@mgt-elastalert-server1 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)
标签:传递 机制 pts domain -o echo over pre 建议
原文地址:https://blog.51cto.com/swiki/2493591