透過 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"