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

如何过滤OpenTelemetry发送到Azure Application Insights的http.client_open_connections指标以减少数据量

如何过滤OpenTelemetry发送到Azure Application Insights的http.client_open_connections指标以减少数据量

别担心,我完全懂你遇到的糟心事——从TelemetryClient切换到OpenTelemetry后,那一堆高频上报的http.client_open_connections指标直接把Application Insights的配额撑爆了,这确实头疼。我来给你分享两种简单有效的过滤方法,帮你快速解决这个问题:


方法一:用AddView快速排除单个指标

这是最简洁的方式,只需要在你的Metrics配置里加一行代码,就能直接禁用指定指标的上报:

修改你现有的WithMetrics配置块,加入AddView来关闭http.client_open_connections:

.WithMetrics(x =>
{
    x.AddSqlClientInstrumentation();
    // 新增这行:禁用http.client_open_connections指标的上报
    x.AddView("http.client_open_connections", new MetricStreamConfiguration { Enabled = false });
})

这种方式适合只需要排除少数几个指标的场景,代码改动极小,见效特别快。


方法二:自定义Metrics处理器(适合复杂过滤需求)

如果你之后需要更灵活的过滤规则(比如同时排除多个指标,或者根据指标的具体属性过滤),可以自定义一个Metrics处理器:

  1. 先创建一个处理器类:
public class FilterUnwantedMetricsProcessor : BaseProcessor<Metric>
{
    // 这里可以添加所有需要排除的指标名称
    private readonly HashSet<string> _excludedMetrics = new HashSet<string>
    {
        "http.client_open_connections",
        // 比如如果还想排除其他冗余指标,像"http.client_current_requests"也可以加在这里
    };

    public override void OnEnd(Metric metric)
    {
        // 如果是要排除的指标,就跳过不上报
        if (_excludedMetrics.Contains(metric.Name))
            return;
        
        base.OnEnd(metric);
    }
}
  1. 然后在你的OpenTelemetry配置里注册这个处理器:
.WithMetrics(x =>
{
    x.AddSqlClientInstrumentation();
    // 添加自定义过滤处理器
    x.AddProcessor<FilterUnwantedMetricsProcessor>();
})

完成配置后重启你的ASP.NET Core应用,再去Application Insights的Logs里查看CustomMetrics,应该就看不到http.client_open_connections的条目了,配额消耗也会明显变慢。如果还有其他高频上报的冗余指标,都可以用类似的方法过滤掉~

备注:内容来源于stack exchange,提问作者Thomas

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 09:58:02