AppDependency 表消耗大量 GB,因为 MS.ProcessedByMetricExtractors

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

我有一个 .NET 应用程序,它将大量数据摄入到 Azure 中的 Log Analytics 工作区中,AppDependency 表在 15 分钟内获取了超过 1500 条记录,这太疯狂了。 大多数日志看起来像这样:

DependencyType: Azure Service Bus
Name: ServiceBusReceiver.Receive

Propierties: {"AspNetCoreEnvironment":"Production","_MS.ProcessedByMetricExtractors":"(Name:'Dependencies', Ver:'1.1')"}
SDKVersion: dotnetc:2.21.0-429

我尝试将应用程序中的日志级别从警告更改为错误,但问题是相同的。 https://learn.microsoft.com/es-mx/dotnet/azure/sdk/logging#map-to-aspnet-core-logging

azure azure-application-insights serilog azure-application-insights-profiler
1个回答
0
投票

您可以过滤掉您不想在 Application Insights 中捕获的特定依赖项。在代码中,在跟踪依赖项之前,请检查类型和其他条件,并决定是否跟踪它。

  • 在这里,我得到了相同的依赖类型跟踪,并且在我的日志分析中收到了不必要的数据。

enter image description here

记录分析数据:

enter image description here

  • 在遥测处理器级别过滤遥测数据,以进一步控制将哪些遥测数据发送到 Application Insights。
using Microsoft.ApplicationInsights;
using Microsoft.ApplicationInsights.Extensibility;

var builder = TelemetryConfiguration.Active.DefaultTelemetrySink.TelemetryProcessorChainBuilder;
builder.Use((next) => new TelemetryFilterProcessor(next));
builder.Build();

public class TelemetryFilterProcessor : ITelemetryProcessor
{
    private ITelemetryProcessor Next { get; set; }

    public TelemetryFilterProcessor(ITelemetryProcessor next)
    {
        this.Next = next;
    }

    public void Process(ITelemetry item)
    {
        if (IsErrorOrWarningTelemetry(item))
        {
            this.Next.Process(item);
        }
    }

    private bool IsErrorOrWarningTelemetry(ITelemetry telemetry)
    {
        // Implement your logic to filter telemetry based on severity
        if (telemetry is ISupportProperties properties)
        {
            if (properties.Properties.TryGetValue("SeverityLevel", out var severityLevel) &&
                Enum.TryParse(severityLevel.ToString(), out LogLevel logLevel))
            {
                // Customize this logic to capture only error and warning telemetry
                return logLevel >= LogLevel.Warning;
            }
        }
        return false;
    }
}

如果您的日志包含此属性,则此处根据“SeverityLevel”等自定义属性进行过滤。

enter image description here

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