我正在使用spring cloud设置spring boot管理员。现在我已经建立了一个独立的eureka服务器和一个spring boot管理员和一些spring boot应用程序作为管理员客户端。如果我没有为所有客户端设置management.context-path,一切正常。但现在我需要监控所有客户端(一些客户端没有management.context-path
,一些客户端不同management.context-path
s)。我知道我应该使用元数据来实现这一点,但在阅读相关文档后,我仍然可以完成这项工作。以下是我在客户端和管理员端的配置。
客户端:
spring:
application:
instance_id: user
name: microservice-provider-user
management:
context-path: '/mgmt'
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
instance:
preferIpAddress: false
statusPageUrlPath: ${management.context-path}${endpoints.info.path:/info}
healthCheckUrlPath: ${management.context-path}${endpoints.health.path:/health}
metadata-map:
instanceId:
${spring.application.name}:${spring.application.instance_id:${random.value}}
管理员方:
spring:
application:
name: wahaha-admin
boot:
admin:
routes:
endpoints: env,metrics,trace,dump,jolokia,info,configprops,trace,logfile,refresh,flyway,liquibase,heapdump,hystrix.stream,turbine.stream
url: http://${HOST_NAME:localhost}:${server.port}
discovery:
converter.management-context-path: '/mgmt'
问题:
spring.boot.admin.discovery.converter.management-context-path
设置为/mgmt
,该值与客户端相同,只有在我将所有客户端应用设置为相同值时才能正常工作,这是不可能的。我该怎么做才能支持不同的management.context-path
?PS:我在本地桌面上做了所有这些,而不是在任何公共云上, 并将在以后转移到产品环境(仍未使用公共云)。
答案 0 :(得分:10)
在客户端:
eureka:
instance:
metadata-map:
management.context-path: ${management.context-path}
如docs:
中所述如果要自定义服务的默认转换,可以将health.path,management.port和/或mangament.context-path条目添加到服务元数据中。