从 AppInsight 中过滤掉成功的依赖项

Filter out successful dependencies from AppInsight

我创建了以下 TelemetryFilter:

    public class TelemetryFilter : ITelemetryProcessor
    {
        private ITelemetryProcessor Next { get; set; }
        public TelemetryFilter(ITelemetryProcessor next)
        {
            Next = next;
        }
        public void Process(ITelemetry item)
        {
            var dependency = item as DependencyTelemetry;
            if (dependency != null && dependency.Success == true) return;
            Next.Process(item);
        }
    }

并在 ApplicationInsights.config 中将 TelemetryFilter 添加到 TelemetruyProcessors。当我 运行 我的机器上的应用程序但当它部署到测试和生产环境时,它可以工作,Azure AppInsights 正在收集依赖项。当我在 Azure 门户中看到它们时,它们具有 属性 Call status: trueCall status 是指 dependency.Success 吗?过滤掉所有成功调用以减少我们的 AppInsights 数据进入并降低我们的 Azure 账单的最佳方法是什么?

过滤掉所有成功的依赖:

您可以在代码中初始化过滤器。在合适的初始化class,

AppStart in Global.asax.cs,将您的处理器插入链中:

var builder = TelemetryConfiguration.Active.DefaultTelemetrySink.TelemetryProcessorChainBuilder;

builder.Use((next) => new SuccessfulDependencyFilter(next));

// If you have more processors:

builder.Use((next) => new AnotherProcessor(next));

builder.Build();

参考for filtering sampling &for request filtering

降低 Application Insights 成本

您需要使用 Application Insights 检查优化 Telemetry here

检查 以了解更多降低应用洞察成本的方法

我发现 ApplicationInsights.config 文件未设置为通过构建过程复制到输出文件夹中。这就是它不起作用的原因。