OpenTelemetry SDK 中 PrometheusExporter 出现 TypeScript 错误:类型“PrometheusExporter”无法分配给类型“MetricReader”

问题描述 投票:0回答:1

我在 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], // The error is here under exporter.
        interval: 1000,
    });
    return meterProviderProm;
};

但是,TypeScript 在 PrometheusExporter 和 MetricReader 之间引发兼容性错误。我收到的错误是:

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

尽管出现此错误,代码仍成功运行,并且指标按预期公开在 /metrics 上。我怀疑这可能与 0.x 版本的 @opentelemetry/exporter-prometheus 和 1.x 版本的 @opentelemetry/sdk-metrics 之间的兼容性问题有关:

"@opentelemetry/exporter-prometheus": "^0.53.0",
"@opentelemetry/sdk-metrics": "^1.27.0"

我尝试直接将 PrometheusExporter 转换为 MetricReader(例如,将导出器转换为 MetricReader)以避免 TypeScript 错误,但这并没有解决根本问题。此外,我探索了使用PeriodicExportingMetricReader,但它似乎并没有解决兼容性问题。

我希望 PrometheusExporter 能够与 MeterProvider 一起使用,而不会出现任何 TypeScript 错误,因为 PrometheusExporter 应该扩展 MetricReader。我正在寻找解决此 TypeScript 错误的解决方法或确认这些 OpenTelemetry 包之间的兼容性问题。

node.js typescript prometheus metrics open-telemetry
1个回答
0
投票

“@opentelemetry/exporter-prometheus”:“^0.54.0”似乎解决了这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.