ZABBIX结合自动发现机制实现站点/hs页面健康监控

SIMONDOMAIN 2020-05-09

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调用的相对应

[ 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是否可以正常拿到域名列表信息

[ ~]# 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平台方面

一切准备就绪,新建ZABBIX模板(Templates)并配置自动发现(Discovery)

配置发现域名列表

ZABBIX结合自动发现机制实现站点/hs页面健康监控

ZABBIX结合自动发现机制实现站点/hs页面健康监控

配置自动发现item

ZABBIX结合自动发现机制实现站点/hs页面健康监控

配置自动发现的trigger

ZABBIX结合自动发现机制实现站点/hs页面健康监控

配置完毕后将模板套用到准备了webhs.sh和domain.list文件的客户端机器上即可,两分钟后会发现已经自动发现并监控了

ZABBIX结合自动发现机制实现站点/hs页面健康监控

相关推荐