Monitoring and Management Over HTTP

如果您正在开发 Web 应用程序,Spring Boot Actuator 会自动配置所有已启用的 endpoin,以在 HTTP 中公开。默认约定是将 endpoin 的 id`用作 URL 路径的前缀 `/actuator。例如,`health`作为 `/actuator/health`公开。

在 Spring MVC、Spring WebFlux 和 Jersey 中本地支持 Actuator。如果 Jersey 和 Spring MVC 均可用,则使用 Spring MVC。

Jackson 是一个必需的依赖项,以便获取 API documentation中记录的正确的 JSON 响应。

Customizing the Management Endpoint Paths

有时自定义管理 endpoin 的前缀是很有用的。例如,您的应用程序可能已出于其他目的使用了 /actuator。您可以使用 configprop:management.endpoints.web.base-path[] 属性来更改管理 endpoin 的前缀,如下例所示:

management:
  endpoints:
    web:
      base-path: "/manage"

前面的 application.properties`示例将 endpoin 从 `/actuator/{id}`更改为 `/manage/{id}(例如,/manage/info)。

如果管理端口未配置为 expose endpoints by using a different HTTP port,那么 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

如果您想将端点映射到不同的路径,则可以使用 configprop:management.endpoints.web.path-mapping[] 属性。

以下示例将 /actuator/health 重新映射到 /healthcheck

management:
  endpoints:
    web:
      base-path: "/"
      path-mapping:
        health: "healthcheck"

Customizing the Management Server Port

通过使用默认 HTTP 端口来公开管理端点对于基于云的部署来说是一个明智的选择。但是,如果您的应用程序在自己的数据中心内运行,则您可能更希望通过使用不同的 HTTP 端口来公开端点。

您可以设置 configprop:management.server.port[] 属性来更改 HTTP 端口,如下面的示例所示:

management:
  server:
    port: 8081

在 Cloud Foundry 上,默认情况下,应用程序只在端口 8080 上接收用于 HTTP 和 TCP 路由的请求。如果您想在 Cloud Foundry 上使用自定义管理端口,则需要显式设置应用程序的路由以便将流量转发到自定义端口。

Configuring Management-specific SSL

在配置为使用自定义端口时,您还可以通过使用各种 management.server.ssl.* 属性为管理服务器配置它自己的 SSL。例如,这样做可以让一个管理服务器通过 HTTP 来使用,而主应用程序使用 HTTPS,如下面的属性设置所示:

server:
  port: 8443
  ssl:
    enabled: true
    key-store: "classpath:store.jks"
    key-password: "secret"
management:
  server:
    port: 8080
    ssl:
      enabled: false

或者,主服务器和管理服务器都可以使用 SSL,但使用不同的密钥存储,如下所示:

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"

Customizing the Management Server Address

您可以通过设置 configprop:management.server.address[] 属性来自定义管理端点可用的地址。如果您只想侦听内部网络或 OPS 面向网络或只侦听来自 localhost 的连接,这样做就很有用。

您只能在端口与主服务器端口不同时才侦听不同的地址。

以下示例 application.properties 不允许远程管理连接:

management:
  server:
    port: 8081
    address: "127.0.0.1"

Disabling HTTP Endpoints

如果您不想通过 HTTP 公开端点,则可以将管理端口设置为 -1,如下面的示例所示:

management:
  server:
    port: -1

您还可以通过使用 configprop:management.endpoints.web.exposure.exclude[] 属性来实现这一点,如下面的示例所示:

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