5.3 通过HTTP进行监控和管理

优质
小牛编辑
118浏览
2023-12-01

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

5.3.1 自定义管理Endpoint路径

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

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

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

除非已将管理端口配置为使用其他HTTP端口公开端点,否则management.endpoints.web.base-path与server.servlet.context-path相关。 如果配置了management.server.port,则management.endpoints.web.base-path与manager.server.servlet.context-path相关。

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

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

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

5.3.2 自定义管理服务器端口

使用默认HTTP端口公开管理端点是基于云的部署的明智选择。 但是,如果您的应用程序在您自己的数据中心内运行,您可能更喜欢使用不同的HTTP端口公开端点。

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

management.server.port=8081

5.3.3 配置特定于管理的SSL

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

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

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

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

5.3.4 自定义管理服务器地址

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

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

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

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

5.3.5 禁用HTTP Endpoints

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

management.server.port=-1

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

management.endpoints.web.exposure.exclude=*