通过 HTTP 进行监控和管理
如果你在开发 Web 应用程序,Spring Boot Actuator 会自动配置所有启用的端点,使其可以通过 HTTP 暴露。默认约定是使用端点的 id
并加上 /actuator
前缀作为 URL 路径。例如,health
端点暴露为 /actuator/health
。
Actuator 原生支持 Spring MVC、Spring WebFlux 和 Jersey。如果 Jersey 和 Spring MVC 都可用,则使用 Spring MVC。 |
Jackson 是获取正确 JSON 响应的必要依赖,详细信息请参阅 API 文档。 |
定制管理端点路径
有时,定制管理端点的前缀会很有用。例如,你的应用程序可能已经将 /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 上,默认情况下,应用程序只在端口 8080 上接收 HTTP 和 TCP 路由请求。如果你想在 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"