通过 HTTP 进行监控和管理
如果您正在开发 Web 应用,Spring Boot Actuator 会自动配置所有启用的端点以通过 HTTP 公开。默认约定是使用端点的 `id` 以及 `/actuator` 的前缀作为 URL 路径。例如,`health` 公开为 `/actuator/health`。
Actuator 原生支持 Spring MVC、Spring WebFlux 和 Jersey。如果 Jersey 和 Spring MVC 都可用,则使用 Spring MVC。 |
要获得正确的 JSON 响应(如 API 文档 中所述),Jackson 是必需的依赖项。 |
自定义管理端点路径
有时,自定义管理端点的前缀很有用。例如,您的应用程序可能已将 `/actuator` 用于其他目的。您可以使用 `management.endpoints.web.base-path` 属性更改管理端点的前缀,如下例所示
-
属性
-
YAML
management.endpoints.web.base-path=/manage
management:
endpoints:
web:
base-path: "/manage"
前面的 `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`
-
属性
-
YAML
management.endpoints.web.base-path=/
management.endpoints.web.path-mapping.health=healthcheck
management:
endpoints:
web:
base-path: "/"
path-mapping:
health: "healthcheck"
自定义管理服务器端口
使用默认 HTTP 端口公开管理端点对于基于云的部署来说是一个明智的选择。但是,如果您的应用程序在您自己的数据中心内运行,您可能更倾向于使用不同的 HTTP 端口公开端点。
您可以设置 `management.server.port` 属性来更改 HTTP 端口,如下例所示
-
属性
-
YAML
management.server.port=8081
management:
server:
port: 8081
在 Cloud Foundry 中,默认情况下,应用程序仅通过端口 8080 接收 HTTP 和 TCP 路由的请求。如果您想在 Cloud Foundry 上使用自定义管理端口,则需要显式设置应用程序的路由以将流量转发到自定义端口。 |
配置特定于管理的 SSL
配置为使用自定义端口后,您还可以使用各种management.server.ssl.*
属性为管理服务器配置其自己的 SSL。例如,这样做可以让管理服务器通过 HTTP 访问,而主应用程序使用 HTTPS,如下面的属性设置所示。
-
属性
-
YAML
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
server:
port: 8443
ssl:
enabled: true
key-store: "classpath:store.jks"
key-password: "secret"
management:
server:
port: 8080
ssl:
enabled: false
或者,主服务器和管理服务器都可以使用 SSL,但使用不同的密钥库,如下所示。
-
属性
-
YAML
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
server:
port: 8443
ssl:
enabled: true
key-store: "classpath:main.jks"
key-password: "secret"
management:
server:
port: 8080
ssl:
enabled: true
key-store: "classpath:management.jks"
key-password: "secret"