通过 JMX 进行监控和管理
Java Management Extensions (JMX) 提供了一种标准的机制来监控和管理应用程序。默认情况下,此功能未启用。你可以通过将 spring.jmx.enabled 配置属性设置为 true 来开启它。Spring Boot 将最合适的 MBeanServer 作为 ID 为 mbeanServer 的 bean 公开。任何使用 Spring JMX 注解(@org.springframework.jmx.export.annotation.ManagedResource、@ManagedAttribute 或 @ManagedOperation)注解的 bean 都会被暴露给它。
如果你的平台提供了一个标准的 MBeanServer,Spring Boot 会使用它;必要时,会默认使用 JVM MBeanServer。如果所有这些都失败了,则会创建一个新的 MBeanServer。
有关更多详细信息,请参阅 JmxAutoConfiguration 类。
默认情况下,Spring Boot 还将管理端点作为 JMX MBean 公开在 org.springframework.boot 域下。要完全控制 JMX 域中的端点注册,请考虑注册你自己的 EndpointObjectNameFactory 实现。
自定义 MBean 名称
MBean 的名称通常从端点的 id 生成。例如,health 端点被公开为 org.springframework.boot:type=Endpoint,name=Health。
如果你的应用程序包含多个 Spring ApplicationContext,你可能会发现名称冲突。为了解决这个问题,你可以将 spring.jmx.unique-names 属性设置为 true,这样 MBean 名称将始终是唯一的。
你还可以自定义端点公开的 JMX 域。以下设置显示了在 application.properties 中执行此操作的示例
-
属性
-
YAML
spring.jmx.unique-names=true
management.endpoints.jmx.domain=com.example.myapp
spring:
jmx:
unique-names: true
management:
endpoints:
jmx:
domain: "com.example.myapp"