透過 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 響應。Spring MVC 和 Spring WebFlux 應該使用 Jackson 3。Jersey 尚無 Jackson 3 模組,因此您需要使用 Jackson 2。 |
自定義管理端點路徑
有時,自定義管理端點的字首很有用。例如,您的應用程式可能已經將 /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"