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

OpenTelemetry SDK中PrometheusExporter与MetricReader类型不兼容问题

OpenTelemetry PrometheusExporter 与 MetricReader 类型兼容问题

我在TypeScript项目中使用OpenTelemetry,通过@opentelemetry/exporter-prometheus暴露/metrics指标,搭配@opentelemetry/sdk-metrics的MeterProvider使用,代码如下:

import { PrometheusExporter } from '@opentelemetry/exporter-prometheus';
import { MeterProvider } from '@opentelemetry/sdk-metrics';

import { config } from '../config';

export const startPrometheusReceiver = () => {
    const exporter = new PrometheusExporter({
        port: config.port,
        endpoint: '/metrics',
    });
    const meterProviderProm = new MeterProvider({
        readers: [exporter], // 错误出在此处的exporter上
        interval: 1000,
    });
    return meterProviderProm;
};

但TypeScript抛出类型兼容错误:

Type 'PrometheusExporter' is not assignable to type 'MetricReader'.
Types have separate declarations of a private property '_shutdown'.

代码能正常运行,指标也能在/metrics正常暴露,但这个类型错误一直存在。我怀疑是@opentelemetry/exporter-prometheus的0.x版本(0.53.0)和`@opentelemetry/sdk-metrics`的1.x版本(1.27.0)之间的兼容性问题。

我尝试过以下方法,但都没解决根本问题:

  • 将PrometheusExporter直接断言为MetricReader(如exporter as MetricReader)
  • 使用PeriodicExportingMetricReader

我原本期望PrometheusExporter可以无TypeScript错误地与MeterProvider配合使用,因为它理应继承MetricReader。现在需要解决这个TypeScript错误的方案,或者确认这些OpenTelemetry包之间的兼容性问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 22:12:40