OpenTelemetry .Net 应用程序 - 收集器缓慢收集的指标

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

我正在运行一个简单的 POC,用于在 .net 6 web api 中使用开放遥测。我正在尝试使用 .net 应用程序中的 Otlp 导出器将指标发送到收集器。 Prometheus 正在抓取收集器公开的端点。

但是,metrics 的初始导出需要很长时间。一旦开始,它似乎每 60 秒发送一次指标。我真的更愿意将它设置为更合理的 5-15 秒左右,以使其演示更好。

我尝试了简单的出口商,但没有成功。我尝试使用非常低的 MaxQueueSize、ScheduledDelayMilliseconds 和 ExporterTimeoutMilliseconds 设置批量导入器。

在 .net 应用程序端启用 ConsoleExporter 时,指标似乎达到了预期的默认值 10 秒。因此,收集器在度量端点上呈现导出之前进行某种累积可能是一个问题?我没有在收集器中使用批处理器,所以我不确定为什么会那样做。

有趣的是,我还为跟踪配置了 OTLP 导出器,我几乎立即将所有结果输入到收集器/jaeger 中。这只是指标的问题。

我目前正在使用最新的 Open Telemetry 稳定包 (1.32.0)。我正在为收集器使用以下 docker 图像: otel/opentelemetry-collector-contrib:0.42.0

此处提供代码: https://github.com/MetalHexx/OpenTelemetryDotNetPoc

缩写启动代码:

services.AddOpenTelemetryMetrics(builder =>
{
     builder
         .AddMeter(App_Source)
         .SetResourceBuilder(resource!)
         .AddAspNetCoreInstrumentation()
         .AddOtlpExporter(options =>
         {
             options.Endpoint = new Uri("http://poc-collector:4319/v1/metrics");
             options.Protocol = OtlpExportProtocol.HttpProtobuf;
             options.ExportProcessorType = ExportProcessorType.Simple;
         });
});

缩写的收集器配置:

receivers:
  otlp:
    protocols:
      http:
        endpoint: 0.0.0.0:4319

exporters:
  prometheus:
    endpoint: "0.0.0.0:8889"
    namespace: poc 

  logging:
    loglevel: debug

service:
  telemetry:
    logs:
      level: "debug"
  extensions: []
  pipelines:
    metrics:
      receivers: [otlp]
      exporters: [logging, prometheus]
.net metrics open-telemetry exporter
© www.soinside.com 2019 - 2024. All rights reserved.