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 中执行此操作的示例:

  1. spring.jmx.unique-names=true
  2. management.endpoints.jmx.domain=com.example.myapp

55.2、禁用 JMX 端点

如果你不想通过 JMX 暴露端点,可以将 management.endpoints.jmx.exposure.exclude 属性设置为 *,如下所示:

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

55.3、通过 HTTP 使用 Jolokia 访问 JMX

Jolokia 是一个 JMX-HTTP 桥,它提供了一种访问 JMX bean 的新方式。要使用 Jolokia,请引入依赖:org.jolokia:jolokia-core。例如,使用 Maven,你将添加以下依赖:

  1. <dependency>
  2. <groupId>org.jolokia</groupId>
  3. <artifactId>jolokia-core</artifactId>
  4. </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。如下所示:

  1. management.endpoint.jolokia.config.debug=true

55.3.2、禁用 Jolokia

如果你使用 Jolokia 但不希望 Spring Boot 配置它,请将 management.endpoint.jolokia.enabled 属性设置为 false,如下所示:

  1. management.endpoint.jolokia.enabled=false