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

如何不使用instrumentation通过OpenTelemetry手动采集JVM与系统指标

OpenTelemetry 手动采集JVM及宿主机指标方案

实现逻辑

OpenTelemetry 原生提供了独立的JVM、系统指标采集扩展,完全不需要依赖自动Instrumentation埋点能力,你可以100%自主控制需要采集的指标范围、维度、采集频率,使用逻辑和你之前熟悉的Micrometer自定义Binder注册模式高度一致,适配成本极低。

具体操作步骤(以Java栈为例)

  • 第一步:引入独立的指标扩展依赖,不需要引入任何自动埋点相关的包,扩展包内预置了全量的JVM、宿主机指标采集实现,包括内存、GC、类加载、CPU、磁盘、网络、进程状态等所有Micrometer支持的同类指标。
  • 第二步:初始化MeterProvider时按需注册采集器,你想要采集哪些指标就注册对应的采集器实例,不需要的完全不用开启,避免冗余指标产生。同时可以给注册的采集器自定义全局标签、指标过滤规则,完全匹配你的自定义测量需求。
  • 第三步:配置对应指标导出器,采集到的指标可以按你的需求导出到Prometheus、OTel Collector等任意后端,原有Micrometer体系下的Grafana大盘只需要做少量指标名映射就可以直接复用。

示例代码

// 初始化MeterProvider
SdkMeterProvider meterProvider = SdkMeterProvider.builder()
    // 配置指标导出规则,示例为暴露Prometheus端口拉取
    .registerMetricReader(PeriodicMetricReader.create(PrometheusHttpServer.create(9464)))
    // 按需注册需要的采集器,不需要的直接注释即可
    .register(new JvmMemoryMetrics()) // JVM内存指标
    .register(new JvmGcMetrics()) // GC相关指标
    .register(new SystemCpuMetrics()) // 宿主机CPU指标
    .register(new ProcessCpuMetrics()) // 应用进程CPU指标
    .register(new DiskMetrics()) // 磁盘相关指标
    .build();

// 绑定到OpenTelemetry实例
OpenTelemetry otel = OpenTelemetrySdk.builder()
    .setMeterProvider(meterProvider)
    .buildAndRegisterGlobal();

其他语言栈的实现逻辑完全一致,官方均提供了对应语言的系统指标独立扩展包,均支持手动注册采集器的用法,不需要接入自动埋点能力。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:36:02