解决 Spring Cloud 的服务应用配置 context-path 后 Spring Boot Admin 监控不到信息的问题

本文介绍了在Spring Cloud服务中,当应用设置context-path后Spring Boot Admin无法监控的问题及解决方案。通过分析源码,揭示了配置eureka.instance.metadata-map.management.context-path和healthUrl的重要性,确保Spring Boot Admin能正确获取服务状态和监控信息。
摘要由CSDN通过智能技术生成

在上篇文章中,讲解了 Spring Cloud 服务使用 Spring Boot Admin 监控的搭建,但是我在做公司的传统项目改造成微服务架构的过程中,在搭建 Spring Boot Admin 的时候,遇到了一个坑,有个服务配置了 context-path 这个属性,导致 Spring Boot Admin 一直获取不到这个服务的端点信息(当时我对 Spring Boot Admin 的使用、原理还不熟悉),现在通过 Spring Boot Admin 的部分源码分析来看看怎么解决这个问题,记录一下我踩到的坑。

(一)首先,我们看下服务配置了 context-path 属性后,不做其他配置,Spring Boot Admin 是什么样子。

拿之前文章里写的服务 spring-demo-service-feign 做例子

修改 spring-demo-service-feign 的配置文件,添加 context-path 的配置如下:

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

server:
  port: 8382
  servlet:
    context-path: /gateway
spring:
  application:
    name: spring-demo-service-feign

feign:
  hystrix:
    enabled: true

# Ribbon 的负载均衡策略
spring-demo-service:
  ribbon:
    NFLoadBalancerRuleClassName: com.netflix.loadbalancer.BestAvailableRule

management:
  endpoints:
    web:
      exposure:
        include: '*'
  endpoint:
      health:
        show-details: ALWAYS
info:
  version: 1.0.0

其他的不用配置,以此启动 eureka serverspring-demo-servicespring-demo-service-feignspringboot-admin 服务

访问 http://localhost:8788/,登录后

可以看到,spring-demo-service-feign 的服务是 DOWN 的状态,点击 spring-demo-service-feign 查看

什么信息都没有,这让我很纳闷,当时不知道是 context-path 造成的,下面先说下解决方案,在通过源码简单分析一下。

(二)对上面的问题,我们可以通过再加几个属性配置来解决

修改 spring-demo-service-feign 的配置文件:

eureka:
  client:
    serviceUrl:
      defaultZone: http://localhost:8761/eureka/

#  如果项目配置有 server.servlet.context-path 属性,想要被 spring boot admin 监控,就要配置以下属性
  instanc
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值