通过HTTP进行监控和管理

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

自定义管理端点路径

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

1
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则相对于management.server.servlet.context-path

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

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

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

自定义Management Server端口

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

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

1
management.server.port=8081

配置管理特定的SSL

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

1
2
3
4
5
6
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但具有不同的密钥库,如下所示:

1
2
3
4
5
6
7
8
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

自定义管理服务器地址

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

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

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

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

禁用HTTP端点

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

1
management.server.port=-1

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

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