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
相关产品推荐
相关产品推荐

