使用OpenTelemetry时如何将应用程序名称的前缀设置到系统指标名称的输出信息中?

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

当我使用 OpenTelemetry.Metrics 库来使用“System.Net.Http”命名空间或其他系统指标的指标时,我会获得格式的指标和标签。

如何为这样的指标和标签设置默认上下文名称(前缀 - “应用程序”)? 在此输入图片描述

尝试将应用程序的前缀设置为指标名称:

 var builder = WebApplication.CreateBuilder(args);
 
 builder.Services.AddConnections();
 builder.Services.AddEndpointsApiExplorer();

 builder.Services.Configure<MetricsPrometheusOptions>(o => 
 {
     o.MetricNameFormatter = (a, b) => $"TestM_{a}_{b}";
     o.LabelNameFormatter = (a) => $"TestM_{a}";
 });
 builder.Services.AddOpenTelemetry()
     .ConfigureResource(resourceBuilder => resourceBuilder.AddService("test_metrics"))
     .ConfigureResource(t => t.AddService(
         serviceName: builder.Configuration.GetValue("AppName", defaultValue: "test-metrics")!,
         serviceVersion: typeof(Program).Assembly.GetName().Version?.ToString() ?? "unknown",
         serviceInstanceId: Environment.MachineName))
     .WithMetrics(x =>
     {
         x.AddHealthChecksInstrumentation(a => a.IncludeHealthCheckMetadata = true);
         x.AddPrometheusExporter();
         x.SetMaxMetricPointsPerMetricStream(19000);
         x.AddHttpClientInstrumentation();
         x.AddAspNetCoreInstrumentation();
         x.AddRuntimeInstrumentation();
         x.AddBuiltInMeters();
     });

在此输入图片描述

c# .net prometheus open-telemetry
1个回答
0
投票

通常,这不是您应该做的。指标名称在整个基础设施中应该相同(如果您使用 OpenTelemetry,甚至它应该针对整个行业进行标准化)。

请考虑使用资源。您可以使用名为

service.name
的工具或创建自定义的东西。您的后端应该允许按此进行过滤。

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