|
此版本仍在开发中,尚未视为稳定版。如需最新稳定版本,请使用 Spring Boot 4.0.4! |
通过 HTTP 进行监控和管理
如果你正在开发一个 Web 应用程序,Spring Boot Actuator 会自动配置所有已启用的端点,使其通过 HTTP 暴露出来。
默认约定是使用端点的 id,并加上前缀 /actuator 作为 URL 路径。
例如,health 端点将被暴露为 /actuator/health。
| Actuator 原生支持 Spring MVC、Spring WebFlux 和 Jersey。 如果同时存在 Jersey 和 Spring MVC,则使用 Spring MVC。 |
| 为了获得如API 文档中所述的正确 JSON 响应,Jackson 是一个必需的依赖项。 Spring MVC 和 Spring WebFlux 应使用 Jackson 3。 Jersey 尚未提供 Jackson 3 模块,因此您需要使用 Jackson 2。 |
自定义管理端点路径
有时,自定义管理端点的前缀非常有用。
例如,您的应用程序可能已经将 /actuator 用于其他用途。
您可以使用 management.endpoints.web.base-path 属性来更改管理端点的前缀,如下例所示:
-
Properties
-
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:
-
Properties
-
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 端口,如下例所示:
-
Properties
-
YAML
management.server.port=8081
management:
server:
port: 8081
| 在 Cloud Foundry 上,默认情况下,应用程序通过 HTTP 和 TCP 路由仅在 8080 端口接收请求。 如果要在 Cloud Foundry 上使用自定义的管理端口,则需要显式配置应用程序的路由,以将流量转发到该自定义端口。 |
配置管理专用的 SSL
当配置为使用自定义端口时,你还可以通过使用各种 management.server.ssl.* 属性为管理服务器单独配置 SSL。
例如,通过这种方式,可以让管理服务器通过 HTTP 访问,而主应用程序使用 HTTPS,如下所示的属性配置:
-
Properties
-
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,但使用不同的密钥库,如下所示:
-
Properties
-
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"
自定义管理服务器地址
你可以通过设置 management.server.address 属性来自定义管理端点的可用地址。
当你希望仅在内部网络或运维专用网络上监听,或者仅接受来自 localhost 的连接时,这样做会非常有用。
| 只有当端口与主服务器端口不同时,你才能监听不同的地址。 |
以下示例的 application.properties 不允许远程管理连接:
-
Properties
-
YAML
management.server.port=8081
management.server.address=127.0.0.1
management:
server:
port: 8081
address: "127.0.0.1"
禁用 HTTP 端点
如果你不想通过 HTTP 暴露端点,可以将管理端口设置为 -1,如下例所示:
-
Properties
-
YAML
management.server.port=-1
management:
server:
port: -1
你也可以通过使用 management.endpoints.web.exposure.exclude 属性来实现这一点,如下例所示:
-
Properties
-
YAML
management.endpoints.web.exposure.exclude=*
management:
endpoints:
web:
exposure:
exclude: "*"