Spring Boot 向 Actuator 端点添加上下文路径

Posted

技术标签:

【中文标题】Spring Boot 向 Actuator 端点添加上下文路径【英文标题】:SpringBoot adds context path to Actuator endpoints 【发布时间】:2021-08-10 21:04:59 【问题描述】:

我通过将上下文路径设置为 /myservice 来运行我的 springboot 应用程序。这导致附加我在 URL-http://localhost:8080/myservice/actuator/ 上公开的所有执行器端点,而我只想要 http://localhost:8080/actuator/。 有没有办法告诉 springboot 忽略附加上下文路径到执行器端点(通过 DispatcherServlet 或 CXFServlet 或任何东西) 请帮忙。

【问题讨论】:

【参考方案1】:

很遗憾,这是不可能的。

来自文档:

除非管理端口已配置为通过以下方式公开端点 使用不同的 HTTP 端口 management.endpoints.web.base-path 是 相对于 server.servlet.context-path (Servlet Web 应用程序)或 spring.webflux.base-path(反应式 Web 应用程序)。如果 management.server.port 已配置, management.endpoints.web.base-path 相对于 management.server.base-path。

来源:https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#actuator.monitoring.customizing-management-server-context-path

您可以做的是为管理端点使用不同的端口。

management.server.port=8081

然后你会得到http://localhost:8081/actuator

【讨论】:

【参考方案2】:

技术上这是不可能的,因为spring boot只有一个DispatcherServlet,它是一个前端控制器,如果你想要两个不同的路径,那么你可以在两个不同的控制器上使用@RequestMapping注解`

仍然需要两个不同的上下文路径,那么你应该有两个 DispatcherServlet's

【讨论】:

【参考方案3】:

更改执行器的根路径 -> application.properties

management.endpoints.web.base-path=/

这将使所有管理端点(包括执行器)没有基本路径,或者您可以指定一些东西。

【讨论】:

以上是关于Spring Boot 向 Actuator 端点添加上下文路径的主要内容,如果未能解决你的问题,请参考以下文章

关于spring-boot-actuator的httptrace端点不生效问题解决办法

关于spring boot启动监控端点的方法(spring-boot-starter-actuator)

Spring Boot Actuator 的“httptrace”端点在 Spring Boot 2.2.0 中不再存在

spring-boot 监控 Actuator

Spring Boot之执行器端点(Actuator Endpoint)实现剖析

Spring Boot中使用Actuator的/info端点输出Git版本信息