|
此版本仍在开发中,尚未被视为稳定版本。如需最新稳定版本,请使用 Spring Boot 4.0.4! |
通过 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 还会在 org.springframework.boot 域下将管理端点暴露为 JMX MBean。
若要完全控制 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"
禁用 JMX 端点
如果您不想通过 JMX 公开端点,可以将 management.endpoints.jmx.exposure.exclude 属性设置为 *,如下例所示:
-
Properties
-
YAML
management.endpoints.jmx.exposure.exclude=*
management:
endpoints:
jmx:
exposure:
exclude: "*"