赞
踩
在上篇文章中,讲解了 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 server、spring-demo-service、spring-demo-service-feign、springboot-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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。