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