54、通过 HTTP 监控和管理

如果你正在开发 Web 应用程序,Spring Boot Actuator 会自动配置所有已启用的端点以通过 HTTP 暴露。默认约定是使用前缀为 /actuator 的端点的 id 作为 URL 路径。例如,health/actuator/health 暴露。提示:Spring MVC、Spring WebFlux 和 Jersey 本身支持 Actuator。

54.1、自定义 Management 端点路径

有时,自定义 management 端点的前缀很有用。例如,你的应用程序可能已将 /actuator 用于其他目的。你可以使用 management.endpoints.web.base-path 属性更改 management 端点的前缀,如下所示:

  1. management.endpoints.web.base-path=/manage

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

注意

除非已将 management 端口配置为使用其他 HTTP 端口暴露端点,否则 management.endpoints.web.base-pathserver.servlet.context-path 相关联。如果配置了 management.server.port,则 management.endpoints.web.base-pathmanagement.server.servlet.context-path 相关联。

如果要将端点映射到其他路径,可以使用 management.endpoints.web.path-mapping 属性。

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

application.properties

  1. management.endpoints.web.base-path=/
  2. management.endpoints.web.path-mapping.health=healthcheck

54.2、自定义 Management 服务器端口

使用默认 HTTP 端口暴露 management 端点是基于云部署的明智选择。但是,如果应用程序是在自己的数据中心内运行,你可能更喜欢使用其他 HTTP 端口暴露端点。

你可以设置 management.server.port 属性以更改 HTTP 端口,如下所示:

  1. management.server.port=8081

54.3、配置 Management 的 SSL

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

  1. server.port=8443
  2. server.ssl.enabled=true
  3. server.ssl.key-store=classpath:store.jks
  4. server.ssl.key-password=secret
  5. management.server.port=8080
  6. management.server.ssl.enabled=false

或者,主服务器和 management 服务器都可以使用 SSL,但他们的 key store 不同,如下所示:

  1. server.port=8443
  2. server.ssl.enabled=true
  3. server.ssl.key-store=classpath:main.jks
  4. server.ssl.key-password=secret
  5. management.server.port=8080
  6. management.server.ssl.enabled=true
  7. management.server.ssl.key-store=classpath:management.jks
  8. management.server.ssl.key-password=secret

54.4、配置 Management 服务器地址

你可以通过设置 management.server.address 属性来自定义 management 端点可用的地址。如果你只想在内部或操作的网络上监听或仅监听来自 localhost 的连接,那么这样做会非常有用。

注意

仅当端口与主服务器端口不同时,才能监听不同的地址。

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

  1. management.server.port=8081
  2. management.server.address=127.0.0.1

54.5、禁用 HTTP 端点

如果你不希望通过 HTTP 暴露端点,则可以将 management 端口设置为 -1,如下所示:

  1. management.server.port=-1

这可以使用 management.endpoints.web.exposure.exclude 属性来实现,如下所示:

  1. management.endpoints.web.exposure.exclude=*