通过 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.