跳到主要内容

通过 HTTP 进行监控和管理

DeepSeek V3 中英对照 Monitoring and Management Over HTTP

如果你正在开发一个 Web 应用程序,Spring Boot Actuator 会自动配置所有启用的端点,以便通过 HTTP 暴露出来。默认的约定是使用端点的 id 并在前面加上 /actuator 作为 URL 路径。例如,health 端点的暴露路径为 /actuator/health

提示

Actuator 原生支持 Spring MVC、Spring WebFlux 和 Jersey。如果同时存在 Jersey 和 Spring MVC,则优先使用 Spring MVC。

备注

Jackson 是一个必需的依赖项,以便按照 API 文档 中的说明获取正确的 JSON 响应。

自定义管理端点路径

有时,自定义管理端点的前缀是很有用的。例如,您的应用程序可能已经将 /actuator 用于其他用途。您可以使用 management.endpoints.web.base-path 属性来更改管理端点的前缀,如下例所示:

management.endpoints.web.base-path=/manage
properties

前面的 application.properties 示例将端点从 /actuator/{id} 更改为 /manage/{id}(例如 /manage/info)。

备注

除非管理端口已配置为通过使用不同的 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 的。

如果你想将端点映射到不同的路径,可以使用 management.endpoints.web.path-mapping 属性。

以下示例将 /actuator/health 重新映射为 /healthcheck

management.endpoints.web.base-path=/
management.endpoints.web.path-mapping.health=healthcheck
properties

自定义管理服务器端口

对于基于云的部署,使用默认的 HTTP 端口暴露管理端点是一个明智的选择。然而,如果你的应用程序运行在你自己的数据中心内,你可能更倾向于使用不同的 HTTP 端口来暴露端点。

你可以通过设置 management.server.port 属性来更改 HTTP 端口,如下例所示:

management.server.port=8081
properties
备注

在 Cloud Foundry 上,默认情况下,应用程序仅在端口 8080 上接收 HTTP 和 TCP 路由的请求。如果您想在 Cloud Foundry 上使用自定义的管理端口,您需要显式设置应用程序的路由,以便将流量转发到自定义端口。

配置特定于管理的 SSL

当配置使用自定义端口时,您还可以通过使用各种 management.server.ssl.* 属性为管理服务器配置其自己的 SSL。例如,这样做可以让管理服务器通过 HTTP 访问,而主应用程序使用 HTTPS,如下面的属性设置所示:

server.port=8443
server.ssl.enabled=true
server.ssl.key-store=classpath:store.jks
server.ssl.key-password=secret
management.server.port=8080
management.server.ssl.enabled=false
properties

或者,主服务器和管理服务器都可以使用 SSL,但使用不同的密钥库,如下所示:

server.port=8443
server.ssl.enabled=true
server.ssl.key-store=classpath:main.jks
server.ssl.key-password=secret
management.server.port=8080
management.server.ssl.enabled=true
management.server.ssl.key-store=classpath:management.jks
management.server.ssl.key-password=secret
properties

自定义管理服务器地址

您可以通过设置 management.server.address 属性来自定义管理端点的可用地址。如果您希望仅监听内部或面向运维的网络,或者仅监听来自 localhost 的连接,这将非常有用。

备注

你只能在端口与主服务器端口不同的情况下监听不同的地址。

以下示例 application.properties 不允许远程管理连接:

management.server.port=8081
management.server.address=127.0.0.1
properties

禁用 HTTP 端点

如果不希望通过 HTTP 暴露端点,可以将管理端口设置为 -1,如下例所示:

management.server.port=-1
properties

你也可以通过使用 management.endpoints.web.exposure.exclude 属性来实现这一点,如下例所示:

management.endpoints.web.exposure.exclude=*
properties