当我使用 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();
});
通常,这不是您应该做的。指标名称在整个基础设施中应该相同(如果您使用 OpenTelemetry,甚至它应该针对整个行业进行标准化)。
请考虑使用资源。您可以使用名为
service.name
的工具或创建自定义的东西。您的后端应该允许按此进行过滤。