使用 App Insights 将关联 ID 添加到自动生成的遥测数据

Adding correlation id to automatically generated telemetry with App Insights

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

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

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

也许最后的办法是关闭所有自动操作并手动完成所有操作,当然我可以控制 TelemetryClient 上设置的属性。但这会增加很多工作量,所以我更愿意找到其他解决方案。

您说应该使用 TelemetryInitializer 是对的。当对任何遥测项调用 Track 方法时,将调用所有 TelemetryInitializers。自动生成的请求遥测在请求 OnEnd 时 "tracked",届时您应该可以使用所有自定义 headers。

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

此外,我们在用户体验中内置了支持,可以轻松查看特定操作的所有遥测数据 - 可以在 "Search->Details-->Related Items-->All telemetry for this operation"

中找到