55、通过 JMX 监控和管理
Java 管理扩展(Java Management Extensions,JMX)提供了一种监控和管理应用程序的标准机制。默认情况下,Spring Boot 将 management 端点暴露为 org.springframework.boot
域下的 JMX MBean。
55.1、自定义 MBean 名称
MBean 的名称通常是从端点的 id
生成的。例如,health
端点公开为 org.springframework.boot:type=Endpoint,name=Health
。
如果你的应用程序包含多个 Spring ApplicationContext
,可能会发生名称冲突。要解决此问题,可以将 spring.jmx.unique-names
属性设置为 true
,以保证 MBean 名称始终唯一。
你还可以自定义暴露端点的 JMX 域。以下设置展示了在 application.properties
中执行此操作的示例:
spring.jmx.unique-names=true
management.endpoints.jmx.domain=com.example.myapp
55.2、禁用 JMX 端点
如果你不想通过 JMX 暴露端点,可以将 management.endpoints.jmx.exposure.exclude
属性设置为 *
,如下所示:
management.endpoints.jmx.exposure.exclude=*
55.3、通过 HTTP 使用 Jolokia 访问 JMX
Jolokia 是一个 JMX-HTTP 桥,它提供了一种访问 JMX bean 的新方式。要使用 Jolokia,请引入依赖:org.jolokia:jolokia-core
。例如,使用 Maven,你将添加以下依赖:
<dependency>
<groupId>org.jolokia</groupId>
<artifactId>jolokia-core</artifactId>
</dependency>
之后可以通过将 jolokia
或 *
添加到 management.endpoints.web.exposure.include
属性来暴露 Jolokia 端点。最后,你可以在 management HTTP 服务器上使用 /actuator/jolokia
访问它。
55.3.1、自定义 Jolokia
Jolokia 有许多设置,你可以通过设置 servlet 参数来使用传统方式进行配置。使用 Spring Boot 时,你可以使用 application.properties
文件配置。请在参数前加上 management.endpoint.jolokia.config
。如下所示:
management.endpoint.jolokia.config.debug=true
55.3.2、禁用 Jolokia
如果你使用 Jolokia 但不希望 Spring Boot 配置它,请将 management.endpoint.jolokia.enabled
属性设置为 false
,如下所示:
management.endpoint.jolokia.enabled=false