通过 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 会使用它,并在必要时默认使用 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"