对于最新的稳定版本,请使用 Spring Boot 3.4.0! |
通过 JMX 进行监控和管理
Java 管理扩展 (JMX) 提供了一种用于监视和管理应用程序的标准机制。
默认情况下,此功能未启用。
您可以通过将 configuration 属性设置为 来打开它。
Spring Boot 将最合适的 MBeanServer
公开为 ID 为 的 bean。
任何使用 Spring JMX 注释(@ManagedAttribute
或 @ManagedOperation
)注释的 bean 都会暴露给它。spring.jmx.enabled
true
mbeanServer
@org.springframework.jmx.export.annotation.ManagedResource
如果你的平台提供了标准的MBeanServer,Spring
Boot 会使用它,并在必要时默认为 VM MBeanServer
。
如果所有这些都失败了,则会创建一个新的 MBeanServer
。
有关更多详细信息,请参见JmxAutoConfiguration
类。
默认情况下, Spring Boot 还将 Management 端点公开为域下的 JMX MBean。
要完全控制 JMX 域中的端点注册,请考虑注册您自己的 EndpointObjectNameFactory
实现。org.springframework.boot
自定义 MBean 名称
MBean 的名称通常是从终端节点生成的。
例如,终端节点公开为 .id
health
org.springframework.boot:type=Endpoint,name=Health
如果你的应用程序包含多个 Spring ApplicationContext
,你可能会发现名称冲突。
要解决此问题,可以将该属性设置为,以便 MBean 名称始终唯一。spring.jmx.unique-names
true
您还可以自定义在其下公开终端节点的 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: "*"