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

自定義管理伺服器地址

您可以透過設定 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: "*"
© . This site is unofficial and not affiliated with VMware.