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

AppDependencies table is consuming big amount of GB's because MS.ProcessedByMetricExtractors

提问人:cammart 提问时间:10/26/2023 更新时间:10/26/2023 访问量:69

问:

我有一个 .NET 应用程序,它将大量数据引入 Azure 中的 Log Analytics 工作区,AppDependencies 表在 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 serilog azure-application-insights-profiler

评论


答:

1赞 Suresh Chikkam 10/26/2023 #1

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

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

enter image description here

Log Analytics 数据:

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