提问人:cammart 提问时间:10/26/2023 更新时间:10/26/2023 访问量:69
AppDependencies 表消耗了大量 GB,因为 MS.ProcessedByMetricExtractors
AppDependencies table is consuming big amount of GB's because MS.ProcessedByMetricExtractors
问:
我有一个 .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
答:
1赞
Suresh Chikkam
10/26/2023
#1
可以筛选出不想在 Application Insights 中捕获的特定依赖项。在代码中,在跟踪依赖项之前,请检查类型和其他条件,并决定是否跟踪它。
- 在这里,我得到了相同的依赖项类型跟踪,并在我的日志分析中接收了不必要的数据。
Log Analytics 数据:
- 在遥测处理器级别筛选遥测数据,以进一步控制将哪些遥测数据发送到 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”)进行筛选(如果日志包含此属性)。
评论