ZABBIX结合自动发现机制实现站点/hs页面健康监控
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ZABBIX结合自动发现机制实现站点/hs页面健康监控相关的知识,希望对你有一定的参考价值。
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文件:
## 这里的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"}
]
}
测试zabbix-server是否可以正常拿到域名列表信息
[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平台方面
一切准备就绪,新建ZABBIX模板(Templates)并配置自动发现(Discovery)
配置发现域名列表
配置自动发现item
配置自动发现的trigger
配置完毕后将模板套用到准备了webhs.sh和domain.list文件的客户端机器上即可,两分钟后会发现已经自动发现并监控了
以上是关于ZABBIX结合自动发现机制实现站点/hs页面健康监控的主要内容,如果未能解决你的问题,请参考以下文章