Spring Boot Admin2.X监控的服务context-path问题

栏目: Java · 发布时间: 5年前

内容简介:在使用Spring Boot Admin进行监控时,如果被监控的服务没有加context-path的话是不会有任何问题的,一旦服务加了context-path的配置,监控就会失败。下图是正常情况的显示:

在使用Spring Boot Admin进行监控时,如果被监控的服务没有加context-path的话是不会有任何问题的,一旦服务加了context-path的配置,监控就会失败。

下图是正常情况的显示:

Spring Boot Admin2.X监控的服务context-path问题

我们给被监控的服务增加一个context-path:

server.servlet.context-path=/yinjihuan

当被监控的服务增加了context-path之后,这边就会报异常了,如下图:

Spring Boot Admin2.X监控的服务context-path问题

原因是什么呢?

这是因为加了context-path后actuator的访问路径都发生变化了,默认的路径都访问不到,拿不到数据导致的。

如何解决呢?

大家看上面贴的图片,右上角显示了健康状态监测的地址:

http://192.168.31.244:8083/
http://192.168.31.244:8083/actuator
http://192.168.31.244:8083/actuator/health

在没加context-path之前,就是这个地址去访问的,加了之后访问的时候就要把context-path给加上,也就是变成了下面的信息:

http://192.168.31.244:8083/yinjihuan
http://192.168.31.244:8083/yinjihuan/actuator
http://192.168.31.244:8083/yinjihuan/actuator/health

关键是如何去修改这个地址啊,我们想想看,Spring Boot Admin只是一个展示平台,本身是不存储信息的,我们用的是整合了Eureka的方式,所以信息都是从Eureka过来的,查看下Eureka中服务的信息就知道了。

通过eureka部署的地址+/eureka/apps/服务名称查看,如下图:

Spring Boot Admin2.X监控的服务context-path问题

可以看到在instance下面有homePageUrl,statusPageUrl,healthCheckUrl的值是没加上context-path的,于是我把这三个值改过来:

eureka.instance.home-page-url-path=${server.servlet.context-path}
eureka.instance.health-check-url-path=${server.servlet.context-path}/actuator/health
eureka.instance.status-page-url-path=${server.servlet.context-path}/actuator/info

然后发现确实不报错了,显示如下:

Spring Boot Admin2.X监控的服务context-path问题

问题是还有很多的监控信息不见了,现在只有一个Metadata和Health信息,还是没有完全改好。

这个时候就两种方式了,要么通过源码的方式去解决问题,要么直接细读官方文档,我看了下文档,找到了一个配置:

Spring Boot Admin2.X监控的服务context-path问题

大概意思是将这个路径追加到服务URL中,用于访问端点信息,这个配置是需要增加到服务的metadata中的,如下:

eureka.instance.metadata-map.management.context-path=${server.servlet.context-path}/actuator

加了这句之后数据就能全部出来了,问题到此全部解决。

还有一种方式就是通过源码的方式来解决,给大家提供点思路,当报错的时候,我们可以抓包,看页面是从哪个地址获取的数据,比如:

Spring Boot Admin2.X监控的服务context-path问题

主要是applications这个地址,可以看到重要的信息是endpoints里面的数据,这些端点信息和对应的url就是最终显示的数据来源,当加了context-path之后这些地址还是之前的,所以获取不到数据,那么为什么需要配置management.context-path就可以解决呢?

大家可以一步步跟进去看源码,我直接告诉大家这块的代码在哪里

de.codecentric.boot.admin.server.services.endpoints.QueryIndexEndpointStrategy.detectEndpoints(Instance)

这个方法里面:

Spring Boot Admin2.X监控的服务context-path问题

这边就是获取所有Endpoints的方法,instance.getRegistration().getManagementUrl()就是我们需要改正确的地址,只有这个地址正确了才能获取到正确的Endpoints信息。

Spring Boot Admin2.X监控的服务context-path问题

欢迎加入我的知识星球,一起交流技术,免费学习猿天地的课程( http://cxytiandi.com/course

PS:目前星球中正在星主的带领下组队学习Sentinel,等你哦!

Spring Boot Admin2.X监控的服务context-path问题

Spring Boot Admin2.X监控的服务context-path问题


以上所述就是小编给大家介绍的《Spring Boot Admin2.X监控的服务context-path问题》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

C语言常用算法分析

C语言常用算法分析

明日科技 / 2012-1 / 39.80元

《C语言学习路线图•C语言常用算法分析》共分为4篇,第1篇为算法基础篇,包括程序之魂——算法、数据结构基础、查找与排序算法、基本算法思想等内容;第2篇为常用算法篇,包括数学算法、矩阵与数组问题、经典算法等内容;第3篇为趣味算法篇,包括数学趣题、逻辑推理题等内容;第4篇为算法竞技篇,包括计算机等级考试算法实例、程序员考试算法实例、信息学奥赛算法实例等内容。 《C语言学习路线图•C语言常用算法分......一起来看看 《C语言常用算法分析》 这本书的介绍吧!

html转js在线工具
html转js在线工具

html转js在线工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具