代码之家  ›  专栏  ›  技术社区  ›  Jörg W Mittag

在Azure函数中进行端到端多组件日志记录

  •  1
  • Jörg W Mittag  · 技术社区  · 7 年前

    使用Application Insights(AI)在多个组件之间进行端到端日志记录是基于 hierarchical Request-Id 标题。因此,每个组件都有责任鸣响一个可能的传入信号 请求ID . 要在应用程序洞察中获得完整的端到端层次结构流,请 请求ID 需要将标题用作AI Operation.Id 和 Operation.ParentId (如所描述的) here )

    但是当用一个 请求ID 使用 HttpTrigger 例如,绑定( Microsoft.NET.Sdk.Functions 1.0.24 )配置了集成的应用程序细节(如前所述 here )一个全新的 操作ID 被创建和使用-导致整个人工智能流程丢失。 你对如何解决这个问题有什么想法吗?

    设置单独的自定义 TelemetryClient 可能是一种选择。但似乎需要很多配置才能得到完整的 ExceptionTrackingTelemetryModule 和 DependencyTrackingTelemetryModule 正确-尤其是在使用函数v2和core(参考 AI config )。有人成功工作了吗?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Liudmila Molkova    7 年前

    这还没有得到函数的支持,但应该在明年早些时候开始工作。

    如果您想破解它,可以添加对ApplicationInsightsSDK for AspNetCore(2.4.1版)的引用,并配置RequestTrackingTelemetryModule。

        static Function1()
        {
            requestModule = new RequestTrackingTelemetryModule();
            requestModule.Initialize(TelemetryConfiguration.Active);
    
        }
    
        private static RequestTrackingTelemetryModule requestModule;
    

    这是相当粗略的,没有完全测试,并且有缺点。例如,收集的请求不再增加函数细节(调用ID等)。为了克服这个问题,您需要从函数依赖注入容器中获得真正的遥测配置,并使用它来初始化模块。 应该是 possible ,但被阻止 some issue .

    但是,即使使用上面的代码,您也应该得到尊重传入报头和与请求相关的其他遥测的请求。

    此外,当对HTTP请求关联的开箱即用支持推出时,这可能会中断。所以这是一个临时的解决方案,只有在你必须使用的时候才使用它。