如果你正在开发一个web应用程序,Spring Boot Actuator会自动配置通过HTTP公开的所有已启用的端点,默认约定是使用带有/actuator前缀的端点id作为URL路径,例如,health公开为/actuator/health。
有时,为管理端点定制前缀是有用的,例如,你的应用程序可能已经将/actuator用于其他目的,你可以使用 management.endpoints.web.base-path
属性,用于更改管理端点的前缀,如下面的示例所示:
management.endpoints.web.base-path=/manage
前面的application.properties示例将端点从/actuator/{id}更改为/manage/{id}(例如,/manage/info)。
PS:除非管理端口被配置为使用不同的HTTP端口来公开端点, management.endpoints.web.base-path
是相对于 server.servlet.context-path
的,如果 management.server.port
被配置, management.endpoints.web.base-path
是相对于 management.server.servlet.context-path
的。
使用默认的HTTP端口公开管理端点是基于云的部署的明智选择,但是,如果你的应用程序运行在你自己的数据中心中,你可能倾向于使用不同的HTTP端口来公开端点。你可以设置 management.server.port
属性改变HTTP端口,如下例所示:
management.server.port=8081
当配置为使用自定义端口时,管理服务器还可以使用各种 management.server.ssl.*
属性配置自己的SSL,例如,这样做可以让管理服务器通过HTTP可用,而主应用程序使用HTTPS。
你可以通过设置 management.server.address
属性来定制管理端点可用的地址,如果你希望只监听内部网络或面向操作系统的网络,或者只监听来自localhost的连接,那么这样做是很有用的。
如果不希望通过HTTP公开端点,则可以将管理端口设置为-1,如下例所示:
management.server.port=-1
Java管理扩展(JMX)提供了一种监视和管理应用程序的标准机制,默认情况下,Spring Boot将管理端点公开为org.springframework.boot域中的JMX mbean。
MBean的名称通常是由端点的id生成的,例如,health端点公开为 org.springframework.boot:type=Endpoint,name=Health
。
如果你的应用程序包含多个Spring ApplicationContext,你可能会发现名称冲突,要解决这个问题,可以设置management.endpoints.jmx.unique-names属性为true,这样MBean名称总是唯一的。
你还可以自定义在其中暴露端点的JMX域,下面的设置显示了application.properties中的一个示例:
management.endpoints.jmx.domain=com.example.myapp management.endpoints.jmx.unique-names=true
如果不希望在JMX上公开端点,您可以设置 management.endpoints.jmx.exposure.exclude属性为*
,如下例所示:
management.endpoints.jmx.exposure.exclude=*
Jolokia是一个JMX-http桥梁,它提供了访问JMX bean的另一种方法,使用Jolokia,引入 org.jolokia:jolokia-core
的依赖。