我有一个 .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
您可以过滤掉您不想在 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”等自定义属性进行过滤。