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 端点的前缀,如下所示:
management.endpoints.web.base-path=/manage
前面的 application.properties
示例将端点从 /actuator/{id}
更改为 /manage/{id}
(例如,/manage/info
)。
注意
除非已将 management 端口配置为使用其他 HTTP 端口暴露端点,否则
management.endpoints.web.base-path
与server.servlet.context-path
相关联。如果配置了management.server.port
,则management.endpoints.web.base-path
与management.server.servlet.context-path
相关联。
如果要将端点映射到其他路径,可以使用 management.endpoints.web.path-mapping
属性。
以下示例将 /actuator/health
重新映射到 /healthcheck
:
application.properties
management.endpoints.web.base-path=/
management.endpoints.web.path-mapping.health=healthcheck
54.2、自定义 Management 服务器端口
使用默认 HTTP 端口暴露 management 端点是基于云部署的明智选择。但是,如果应用程序是在自己的数据中心内运行,你可能更喜欢使用其他 HTTP 端口暴露端点。
你可以设置 management.server.port
属性以更改 HTTP 端口,如下所示:
management.server.port=8081
54.3、配置 Management 的 SSL
当配置为使用自定义端口时,还可以使用各种 management.server.ssl.*
属性为 management 服务器配置自己的 SSL。例如,这样做可以在主应用程序使用 HTTPS 时可通过 HTTP 使用 management 服务器,如以下属性设置所示:
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
或者,主服务器和 management 服务器都可以使用 SSL,但他们的 key store 不同,如下所示:
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
54.4、配置 Management 服务器地址
你可以通过设置 management.server.address
属性来自定义 management 端点可用的地址。如果你只想在内部或操作的网络上监听或仅监听来自 localhost
的连接,那么这样做会非常有用。
注意
仅当端口与主服务器端口不同时,才能监听不同的地址。
以下 application.properties
示例不允许远程连接 management:
management.server.port=8081
management.server.address=127.0.0.1
54.5、禁用 HTTP 端点
如果你不希望通过 HTTP 暴露端点,则可以将 management 端口设置为 -1
,如下所示:
management.server.port=-1
这可以使用 management.endpoints.web.exposure.exclude
属性来实现,如下所示:
management.endpoints.web.exposure.exclude=*