Prometheus 未使用 OpenTelemetry 从 ASP.NET Core 应用程序中抓取自定义指标 (prometheus_demo_request_total)

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

我在 ASP.NET Core 应用程序中实现了一个自定义中间件,以使用 Prometheus 记录 HTTP 请求指标。我使用 link 实现了中间件。但是,尽管每个 HTTP 请求都会触发中间件,但在访问 /metrics 端点时这些自定义指标不会出现。

我已确认在中间件调用期间执行了 counter.Labels(...).Inc() 调用,但 Prometheus 指标输出中缺少预期指标。存在来自 OpenTelemetry 的其他默认指标。

我寻求帮助来确定此问题的根本原因,并确保 Prometheus 正确抓取和显示自定义指标。

我的 Startup.cs 类如下所示:

public void ConfigureServices(IServiceCollection services)
{
    ...

    services.AddOpenTelemetry()
                .WithMetrics(builder => builder
                    .AddRuntimeInstrumentation()
                    .AddAspNetCoreInstrumentation()
                    .AddHttpClientInstrumentation()
                    .AddPrometheusExporter());
}

public void Configure(IApplicationBuilder app, IWebHostEnvironment env, CustomDbContext dbContext, ILogger<RedactableDbContext> logger)
{
    app.UseRequestMiddleware();

    ...
}

以下是我用于 OpenTelemetry 和 Prometheus 的库:

<PackageReference Include="OpenTelemetry.Exporter.Console" Version="1.6.0" />
<PackageReference Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.6.0" />
<PackageReference Include="OpenTelemetry.Exporter.Prometheus.AspNetCore" Version="1.6.0-rc.1" />
<PackageReference Include="OpenTelemetry.Extensions.Hosting" Version="1.6.0" />
<PackageReference Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.5.1-beta.1" />
<PackageReference Include="OpenTelemetry.Instrumentation.Http" Version="1.5.1-beta.1" />
<PackageReference Include="OpenTelemetry.Instrumentation.RunTime" Version="1.5.1" />
<PackageReference Include="prometheus-net.AspNetCore" Version="8.2.0" />
prometheus middleware open-telemetry asp.net-core-middleware
1个回答
0
投票

自定义指标需要使用 OpenTelemetry SDK 注册。

修改现有的设置代码以包含对

AddMeter
:

的调用
services.AddOpenTelemetry()
    .WithMetrics(builder => builder
        .AddRuntimeInstrumentation()
        .AddAspNetCoreInstrumentation()
        .AddHttpClientInstrumentation()
        .AddPrometheusExporter());
        .AddMeter("YourMeterName"));

如果没有这个,Prometheus 导出器将不会知道您的自定义指标。

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