You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure Durable Function分布式追踪:如何隐藏存储相关任务

隐藏Durable Task分布式追踪中的Microsoft表活动

你调整logLevel的方式不生效,是因为日志级别控制的是日志输出量,和分布式追踪生成的Span(链路节点)不是同一套机制。要隐藏Microsoft表活动的追踪节点,可通过以下几种方式实现:

方式1:配置Durable Task追踪过滤规则

在hosts.json的durableTask.tracing节点中,通过traceOptions指定仅追踪业务相关的活动类型,排除内部存储操作:

{
  "version": "2.0",
  "telemetryMode": "OpenTelemetry",
  "logging": {
    "logLevel": {
      "default": "Warning",
      "DurableTask.AzureStorage": "Warning",
      "DurableTask.Core": "Warning",
      "Microsoft": "Warning",
      "Host.Triggers.DurableTask": "Information",
      "Function": "Information",
      "Function.http_trigger_2": "Warning",
      "Function.say_hello": "Warning"
    }
  },
  "extensions": {
     "durableTask": {
       "tracing": {
         "distributedTracingEnabled": true,
         "version": "V2",
         "traceOptions": {
           "traceActivityTypes": "Orchestrator,Activity" // 仅追踪编排器和业务活动节点
         }
       }
     }
  },
  "extensionBundle": {
    "id": "Microsoft.Azure.Functions.ExtensionBundle",
    "version": "[4.*, 5.0.0)"
  }
}

该配置会让Durable Task只生成编排器和自定义活动的追踪节点,自动过滤掉内部的Microsoft表存储操作。

方式2:自定义OpenTelemetry Span处理器

如果需要更精细的过滤逻辑(比如针对特定表操作),可以在代码中添加自定义Span处理器,直接过滤掉不需要的追踪节点:

using OpenTelemetry;
using OpenTelemetry.Trace;
using System.Diagnostics;

public class MicrosoftTableSpanFilter : BaseProcessor<Activity>
{
    public override void OnStart(Activity activity)
    {
        // 过滤名称包含Microsoft表操作的Span
        if (activity.DisplayName.Contains("Microsoft.Table", StringComparison.OrdinalIgnoreCase))
        {
            // 标记该Span不被记录
            activity.IsAllDataRequested = false;
        }
        base.OnStart(activity);
    }
}

// 在Function启动类中注册处理器
[assembly: FunctionsStartup(typeof(YourApp.Startup))]
namespace YourApp
{
    public class Startup : FunctionsStartup
    {
        public override void Configure(IFunctionsHostBuilder builder)
        {
            builder.Services.AddOpenTelemetry()
                .WithTracing(builder =>
                {
                    builder
                        .AddSource("DurableTask.Core")
                        .AddAzureMonitorTraceExporter() // 替换为你的追踪导出器
                        .AddProcessor(new MicrosoftTableSpanFilter());
                });
        }
    }
}

方式3:在Application Insights中过滤(如果使用Azure Monitor)

如果你的追踪数据发送到Application Insights,也可以在平台层面设置过滤:

  • 打开Application Insights的「分布式追踪」页面,使用顶部的筛选器,排除操作名称包含Microsoft.Table的节点
  • 或者创建自定义日志查询,过滤掉无关Span后再查看完整链路:
    traces
    | where not(operation_Name contains "Microsoft.Table")
    | order by timestamp desc
    

内容的提问来源于stack exchange,提问作者Ryu S.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 02:42:04