You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

非SpringBoot项目中如何将Micrometer采集的指标发布到JMX

非Spring Boot应用将Micrometer指标发布到JMX实现方案

核心逻辑

Spring Boot会自动完成JmxMeterRegistry的装配和注册,普通Java应用需要手动将JMX注册表绑定到Micrometer的指标体系中,才能把采集到的指标导出到JMX。

具体实现步骤

1. 初始化JmxMeterRegistry并绑定到指标体系

在应用启动入口、所有指标注册之前执行如下初始化代码:

import io.micrometer.core.instrument.Clock;
import io.micrometer.core.instrument.Metrics;
import io.micrometer.jmx.JmxConfig;
import io.micrometer.jmx.JmxMeterRegistry;

// 使用默认配置初始化JMX注册表
JmxMeterRegistry jmxRegistry = new JmxMeterRegistry(JmxConfig.DEFAULT, Clock.SYSTEM);
// 绑定到全局复合注册表,之前/之后注册到Metrics.globalRegistry的指标都会自动导出到JMX
Metrics.addRegistry(jmxRegistry);

如果需要自定义JMX配置(比如修改MBean的域名、调整数据上报频率),可以自定义JmxConfig实现:

JmxConfig customConfig = new JmxConfig() {
    @Override
    public String get(String key) {
        // 自定义MBean域名,方便在JConsole中分类查找
        if ("jmx.domain".equals(key)) {
            return "com.your.business.metrics";
        }
        // 未自定义的配置走默认值
        return null;
    }
};
JmxMeterRegistry customJmxRegistry = new JmxMeterRegistry(customConfig, Clock.SYSTEM);
Metrics.addRegistry(customJmxRegistry);

2. 正常使用已定义的Timer指标

按原有逻辑记录指标即可,示例:

// 记录业务操作耗时
timer.record(() -> {
    // 你的业务逻辑代码
});

3. JConsole查看指标

启动应用后打开JConsole,选择对应Java进程,切换到「MBean」标签页:

  • 使用默认配置的话,展开io.micrometer域名下的节点
  • 自定义域名的话展开你配置的对应域名节点
    即可找到你定义的nameTimer的所有指标,包括你配置的0.5、0.75、0.95等分位数数据。

常见问题排查

  • 要是JConsole找不到对应MBean,先确认JmxMeterRegistry的初始化代码是否在指标注册之前执行
  • 如果运行时报类缺失错误,检查micrometer-core和micrometer-registry-jmx的依赖版本是否一致

内容的提问来源于stack exchange,提问作者prix

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 09:24:02