【问题标题】:Adding correlation id to automatically generated telemetry with App Insights使用 App Insights 将关联 ID 添加到自动生成的遥测数据
【发布时间】:2015-08-23 21:29:54
【问题描述】:

我是 Application Insights 的新手,我正在考虑将它用于我计划使用 asp.net webapi 实现的一组服务。我能够非常轻松地启动和运行基本遥测(右键单击 VS 上的项目,添加 Application Insights),但后来我遇到了障碍。我计划在请求标头中为下游服务调用设置一个关联 ID,并且我想用相同的关联 ID 标记与一个外部调用相关的所有遥测数据。

到目前为止,我发现有一种方法可以配置TelemetryInitializer,但如果我理解正确,这是在我访问请求之前运行的,这意味着我无法检查是否存在关联 ID我应该附上。

所以我想可能有两种方法可以解决这个问题:1)如果我可以在初始化程序之前以某种方式实际访问请求标头,那显然可以解决问题,或者 2)以某种方式获得 TelemetryClient 实例用于报告自动生成的遥测数据。

也许最后的手段是关闭所有自动操作并手动完成所有操作,此时我当然可以控制在TelemetryClient 上设置哪些属性。但这将是相当多的工作,所以我更愿意找到其他解决方案。

【问题讨论】:

    标签: asp.net asp.net-web-api azure-application-insights


    【解决方案1】:

    你说你应该使用 TelemetryInitializer 是对的。当对任何遥测项调用 Track 方法时,将调用所有 TelemetryInitializers。自动生成的请求遥测在请求 OnEnd 时被“跟踪”,此时您应该可以使用所有自定义标头。

    【讨论】:

    • 在最新版本(2.0.0-beta3)中,我们还通过HttpContext扩展方法公开了自动生成的请求遥测:GetRequestTelemetry
    【解决方案2】:

    还请查看 OperationId - 这是由 App Inisghts 管理的标准上下文的一部分,完全用于将请求与下游执行关联起来。这是自动创建和传递的,包括跟踪(如果您使用 trackTrace)。

    此外,我们在 UX 中内置了支持,可以轻松查看特定操作的所有遥测数据 - 可以在“搜索->详细信息-->相关项目->此操作的所有遥测数据”中找到。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-14
      • 2014-09-28
      • 1970-01-01
      • 2018-08-14
      • 2021-08-15
      相关资源
      最近更新 更多