透過 HTTP 監控與管理

如果您正在開發網路應用程式,Spring Boot Actuator 會自動組態所有已啟用的端點,使其透過 HTTP 公開。預設慣例是使用端點的 id,並以 /actuator 作為 URL 路徑的前綴。例如,health 會公開為 /actuator/health

Actuator 原生支援 Spring MVC、Spring WebFlux 和 Jersey。如果 Jersey 和 Spring MVC 都可用,則會使用 Spring MVC。
為了獲得 API 文件中記錄的正確 JSON 回應,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 網路應用程式) 或 spring.webflux.base-path (對於反應式網路應用程式)。如果已組態 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"

自訂管理伺服器位址

您可以透過設定 management.server.address 屬性來自訂管理端點可用的位址。如果您只想在內部或面向運營的網路上監聽,或者只想監聽來自 localhost 的連線,這樣做可能會很有用。

只有當埠與主要伺服器埠不同時,您才能在不同的位址上監聽。

下列 application.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,如下列範例所示

  • 屬性

  • YAML

management.server.port=-1
management:
  server:
    port: -1

您也可以使用 management.endpoints.web.exposure.exclude 屬性來達成此目的,如下列範例所示

  • 屬性

  • YAML

management.endpoints.web.exposure.exclude=*
management:
  endpoints:
    web:
      exposure:
        exclude: "*"