You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用OpenTelemetry如何配置系统指标名称前缀及全局标签

OpenTelemetry Metrics 配置:添加统一前缀与全局标签

一、全局添加env、app、version标签

你之前尝试添加自定义标签未生效,是因为需要在ConfigureResource中通过AddAttributes方法直接注入全局属性,这些属性会自动附加到所有采集的指标标签中。

修改ConfigureResource段代码如下:

x.ConfigureResource(t => t
    .AddService(
        serviceName: "test",
        serviceVersion: "v1",
        serviceInstanceId: Environment.MachineName)
    // 追加全局自定义标签
    .AddAttributes(new Dictionary<string, object>
    {
        ["env"] = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "production",
        ["app"] = "test",
        ["version"] = "v1"
    }));

二、为指标添加application前缀

要给所有采集的指标(包括System.Net.Http这类系统指标)统一添加application前缀,需配置Prometheus Exporter的指标名称格式化器,通过自定义规则批量修改输出的指标名:

修改AddPrometheusExporter段代码如下:

x.AddPrometheusExporter(options =>
{
    // 为所有指标名称添加application前缀
    options.MetricNameFormatter = metricInfo => $"application_{metricInfo.MetricName}";
});

完整修改后的代码

var builder = WebApplication.CreateBuilder(args);
builder.Services.AddConnections();
builder.Services.AddEndpointsApiExplorer();
builder.Services
    .AddOpenTelemetry()
    .WithMetrics(x =>
    {
        x.ConfigureResource(t => t
            .AddService(
                serviceName: "test",
                serviceVersion: "v1",
                serviceInstanceId: Environment.MachineName)
            .AddAttributes(new Dictionary<string, object>
            {
                ["env"] = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") ?? "production",
                ["app"] = "test",
                ["version"] = "v1"
            }));
        x.AddHealthChecksInstrumentation(a => a.IncludeHealthCheckMetadata = true);
        x.AddPrometheusExporter(options =>
        {
            options.MetricNameFormatter = metricInfo => $"application_{metricInfo.MetricName}";
        });
        x.AddHttpClientInstrumentation();
        x.AddBuiltInMeters();
    });

var app = builder.Build();

app.UseOpenTelemetryPrometheusScrapingEndpoint();
app.MapPrometheusScrapingEndpoint();

app.Run();

关键说明

  • 全局标签:Resource中配置的属性会作为所有指标的通用标签,Prometheus Exporter会自动将这些属性转换为标签输出。
  • 指标前缀:通过MetricNameFormatter可以统一修改所有导出到Prometheus的指标名称,覆盖系统内置和自定义采集的所有指标。

内容的提问来源于stack exchange,提问作者Kseniya Yudina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 11:40:00