基于 JMX 的监控与管理
Java Management Extensions(JMX,Java 管理扩展)为监控和管理应用提供了标准机制。
默认情况下,该特性未启用。
你可以通过将 spring.jmx.enabled
配置属性设置为 true
来开启。
Spring Boot 会将最合适的 MBeanServer
作为名为 mbeanServer
的 bean 暴露。
所有带有 Spring JMX 注解(@org.springframework.jmx.export.annotation.ManagedResource
、@ManagedAttribute
或 @ManagedOperation
)的 bean 都会被暴露。
如果你的平台提供了标准的 MBeanServer
,Spring Boot 会优先使用它,如有必要则默认使用 VM 的 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
中的配置示例:
-
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"