Tycho Blog
专注于信息、技术分享

Zabbix自动发现Spring Boot下各服务的可用性

一、Spring Boot 获取健康状态数据

        先要Springboot 把/actuator/health健康检查打开,另外需要能抓到eureka的各应用状态数据,访问http://ip:8000/actuator/health|jq . 可以获取下面数据即可

         上面这图的数字代表该应用对应副本有几个是存活的,3是有3个副本是正常状态,2是2个副本是正常状态,1也是类似,只有小于1也就是0的情况就是故障,根据这种情况可以后面zabbix定制触发器的时候定制小于1的时候告警,当然这个可以灵活如果你生产所有应用的副本都给固定比如5个副本,那触发器可以做小于5的时候告警,这样可以知道哪个应用有副本故障,只是个别副本故障的应用还是可以正常访问的。

二、定制Zabbix模板跟服务发现规则

1、写服务发现脚本

[root@test zabbix_agentd.d]# vi ../zabbix_scripts/spring_discovery.sh
#!/bin/bash
proarray=($(curl -s http://101.211.1.33:8000/actuator/health |jq . | python -c "import sys, json; print json.load(sys.stdin)['details']['discoveryComposite']['details']['discoveryClient']['details']['services']"|sed "s/u'/ /g"|sed "s/'\,/ /g"|sed "s/\[/ /g"|sed "s/'\]/ /g"))
length=${#proarray[@]}
printf "{\n"
printf  '\t'"\"data\":["
printf "\t"
for ((i=0;i<$length;i++))
do
        printf '\n\t\t{'
        printf "\"{#SPRING}\":\"${proarray[$i]}\"}"
        if [ $i -lt $[$length-1] ];then
                printf ','
        fi
done
printf  "\n\t]\n"
printf    "}\n"

          脚本说明
          执行如下
          转成Zabbix对应的格式

2、写获取的Spring Boot 对应应用的状态值脚本

       zabbix获取状态值脚本内容如下:

[root@test zabbix_agentd.d]# vi ../zabbix_scripts/springboot_status.sh 
#!/bin/bash
spring_name=`echo $1  | tr '[a-z]' '[A-Z]'`
curl -s http://101.211.1.33:8000/actuator/health |jq . | python -c "import sys, json; print json.load(sys.stdin)['details']['discoveryComposite']['details']['eureka']['details']['applications']['$spring_name']"

        执行脚本结果如下即可:

[root@test zabbix_agentd.d]# ../zabbix_scripts/springboot_status.sh zipkinserver
2

        数据处理完的就定制Zabbix模板

三、Zabbix 模板定制

        定制方法就不详细说明的,跟自定义模板方法类似网络上很多就不说明,文章后面会附件相关模板。

1、zabbix监控视图效果如下

        如果服务多的这样一个一个很麻烦可以通过Grafana把这些服务聚合在一个视图里面,多条线来区分

2、Grafana 服务聚合

2.1、安装Grafana zabbix插件

        首先先安装插件Zabbix plugin for Grafana(alexanderzobnin-zabbix-app),官方插件地址:https://grafana.com/grafana/plugins/alexanderzobnin-zabbix-app;官方页面安装

2.2、配置Grafana zabbix源

        然后导入我的附件里面的Spring Boot 的Dashboards模板,效果如下
        监控脚本模板下载zabbix_springboot,记得修改本解压文件里面脚本的IP跟端口

赞(1) 打赏
未经允许不得转载:fleyun » Zabbix自动发现Spring Boot下各服务的可用性
分享到: 更多 (0)

评论 3

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
  1. #1

    Great content! Super high-quality! Keep it up! 🙂

    AffiliateLabz5年前 (2020-02-16)回复
  2. #2

    # ./spring_discovery.sh
    Traceback (most recent call last):
    File “”, line 1, in
    KeyError: ‘details’
    {
    “data”:[
    ]
    }

    你好我在运行这个脚本的时候出错这个错误不知道是什么问题

    天天4年前 (2021-03-23)回复
    • @天天 你看看是不是你没有装jq

      tycho_yang4年前 (2021-04-07)回复

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

登录

注册