资讯专栏INFORMATION COLUMN

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

SHERlocked93 / 2385人阅读

摘要:在使用进行监控时,如果被监控的服务没有加的话是不会有任何问题的,一旦服务加了的配置,监控就会失败。欢迎加入我的知识星球,一起交流技术,免费学习猿天地的课程目前星球中正在星主的带领下组队学习,等你哦

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

下图是正常情况的显示:

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

server.servlet.context-path=/yinjihuan

当被监控的服务增加了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/服务名称查看,如下图:

可以看到在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

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

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

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

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

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

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

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

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

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

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

这个方法里面:

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

欢迎加入我的知识星球,一起交流技术,免费学习猿天地的课程(http://cxytiandi.com/course) PS:目前星球中正在星主的带领下组队学习Sentinel,等你哦!

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/73586.html

相关文章

  • Spring Boot 参考指南(通过HTTP监控和管理)

    摘要:通过监控和管理如果你正在开发一个应用程序,会自动配置通过公开的所有已启用的端点,默认约定是使用带有前缀的端点作为路径,例如,公开为。 51. 通过HTTP监控和管理 如果你正在开发一个web应用程序,Spring Boot Actuator会自动配置通过HTTP公开的所有已启用的端点,默认约定是使用带有/actuator前缀的端点id作为URL路径,例如,health公开为/actua...

    jayzou 评论0 收藏0
  • spring boot admin系统监控处理

    摘要:系统监控使用修改增加启动类增加注解支持修改属性文件修改增加修改属性文件增加配置启动和即可查看应用的状态 1.系统监控使用springboot admin 2.springboot admin server 2.1 修改pom.xml增加dependency de.codecentric spring-boot-admin...

    CloudDeveloper 评论0 收藏0
  • 记录spring-boot 1.5.9升级至2.0.1那些坑

    摘要:前两天组里的大佬心血来潮,让我这周把项目里的版本升级到最新版本,目前项目用到的是版本为的版本为现在按照要求统一升级到。三数据库连接池同样也是版本不兼容,需要升级到,亲测有效。差不多这些,后续遇到其他问题还会继续补充。 前两天组里的大佬心血来潮,让我这周把项目里的spring-boot、spring-cloud版本升级到最新版本,目前项目用到的是spring-boot版本为1.5.9.R...

    gitmilk 评论0 收藏0
  • 二.spring-boot:基本配置

    摘要:随机值配置文件配置文件中可以用来生成各种不同类型的随机值,从而简化了代码生成的麻烦,例如生成值值或者字符串。多环境配置是用来针对不同环境提供不同配置的支持全局配置使用。通过中设置值在下新建和文件并分别配置中配置默认值使用拓展 一.基本配置 1.1 springboot入口类@SpringBootApplication @SpringBootApplication 是springboot...

    mo0n1andin 评论0 收藏0
  • Zuul中聚合Swagger

    摘要:下面来看下具体的整合步骤以及采坑记录。正常情况下上面的整合步骤没任何问题,今天有朋友在星球提问,说自己的业务服务加了,中聚合的文档无法显示,因为路径错了,少了配置的。 每个服务都有自己的接口,通过Swagger来管理接口文档。在服务较多的时候我们希望有一个统一的入口来进行文档的查看,这个时候可以在zuul中进行文档的聚合显示。 下面来看下具体的整合步骤以及采坑记录。Cloud版本:Fi...

    icyfire 评论0 收藏0

发表评论

0条评论

SHERlocked93

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<