kubernetes 如何停止记录过多的ServiceBusReceiver.Receive Dependency日志到App Insights

6rqinv9w  于 2023-05-06  发布在  Kubernetes
关注(0)|答案(2)|浏览(168)

我有一个Kubernetes应用程序,它不断地记录ServiceBusReceiver.接收依赖调用。每个示例每小时创建2000个日志。在TelemtryClient中,只有TrackEvent和TrackException的自定义方法,因此这些方法看起来像是来自其他地方,我无法跟踪它以禁用或找出为什么它的日志记录如此之多。TrackDependency方法是内置的Microsoft.ApplicationInsights.TelemetryClient包的一部分。我已经改变了软件包的版本,以匹配另一个消息传递应用程序,我没有运气,也更新了软件包,以最新版本也没有运气。日志里没什么其他信息可以追踪。
SERVICEBUS服务总线接收器。接收

  • 依赖项属性

类型:服务总线
呼叫状态:真
持续时间:1.0分钟
名称:ServiceBusReceiver.Receive
遥测类型:相依性
应用程序版本:4.19.0.0
SDK版本dotnetc:2.21.0-429
采样率:1
性能:1分钟-2分钟
基名称:ServiceBusReceiver.Receive
有关安装的软件包和版本的其他信息:

  • Sdk=“Microsoft.NET.Sdk”
  • net6.0
  • AzureFunctionsVersion v4
  • “AutoMapper.Extensions.Microsoft.DependencyInjection”版本=“4.0.1”
  • “Azure.Messaging.ServiceBus”版本=“7.10.0”
  • “Microsoft.Azure.WebJobs.Extensions.ServiceBus”版本=“5.4.0”
  • “Microsoft.Azure.WebJobs.Logging.ApplicationInsights”版本=“3.0.33”
  • “Microsoft.NET.Sdk.Functions”版本=“4.0.1”
  • “Microsoft.Azure.Functions.Extensions”版本=“1.1.0”
  • “Microsoft.Extensions.Azure”版本=“1.2.0”
  • “Microsoft.Extensions.Configuration.AzureAppConfiguration”版本=“5.1.0”
  • “Microsoft.Extensions.Caching.Memory”版本=“6.0.1”
  • “Polly”版本=“7.1.0”
  • “Scrutor”版本=“4.1.0”
pprl5pva

pprl5pva1#

为此,您可以编写一个TelemetryProcessor:
遥测处理器允许您完全替换或丢弃遥测项目。
它可能看起来像这样:

public class ServiceBusTelemetryReducer : ITelemetryProcessor
{
    private readonly ITelemetryProcessor _next;
            
    public ServiceBusTelemetryReducer(ITelemetryProcessor next)
    {
        _next = next;
    }

    public void Process(ITelemetry item)
    {
        var isServiceBusReceiveTelemetry = item is DependencyTelemetry telemetry
            && telemetry.Type == "Azure Service Bus"
            && telemetry.Name == "ServiceBusReceiver.Receive";

        // Only process telemetry that is relevant
        if (!isServiceBusReceiveTelemetry)
            _next.Process(item);
    }
}

不要忘记注册处理器:

services.AddApplicationInsightsTelemetryProcessor<ServiceBusTelemetryReducer>();
ct3nt3jp

ct3nt3jp2#

您不能抑制单个日志,但可以调整捕获的级别以降低噪声。
默认情况下,5.x+扩展包中使用的Azure SDK将遵循全局日志级别配置。每一个都可以单独调优,以允许您捕获应用程序感兴趣的详细程度。
若要更改您看到的Service Bus和其他Azure SDK包的日志详细信息,您需要在host.json日志记录部分中按包定义其级别。例如,如果您希望将服务总线调用限制为仅显示警告和错误,则可以使用类似于以下内容的内容:

"Logging": {
  "LogLevel": {
    "Default": "Information",
    "System": "Information",
    "Azure.Messaging.ServiceBus": "Warning"
  }
}

有关Azure SDK日志记录配置如何Map到Functions日志记录的详细信息,请参阅文章Logging with the Azure SDK for. NET。

相关问题