如何在 Application Insights 中跨多个 Azure 服务关联单个请求?

How can I correlate a single request across multiple Azure services in Application Insights?

如何在 Application Insights 中跨多个 Azure 服务关联单个请求?

假设我们使用 API 应用程序在 API 管理中公开一个 "Create Case" API 端点。

API 应用会做一些工作,包括触发逻辑应用。

如何在所有各种 Azure 服务中查看请求的 "flow" 以提供特定情况的单个 "view" 状态?

我只是说 Application Insights,因为我们在 Web 应用程序/API 应用程序中使用它,所以任何其他基于 Azure 的工具都可以

我们做什么:

  1. 在API管理入站策略中我们创建一个GUID(CorrelationId)
  2. 然后我们在 HTTP headers 中将其传递给 API 后端或在消息中传递 通过服务总线的属性 Queues/Topics
  3. API 管理日志记录(包括 CorrelationId)被推送到 EventHub,然后使用 Azure Functions
  4. 记录到 AppInsights
  5. 处理 Queue 等消息的所有 API 和函数也记录到 AppInsights

综上所述:所有可以登录到AppInsights的逻辑组件都将CorrelationId放入CustomDimensions中。这样我们就可以跟踪请求执行的所有步骤。

您可以使用 Client Tracking Id 来实现。

client tracking ID 是一个值,它将跨逻辑应用 运行 关联事件,包括作为逻辑应用的一部分调用的任何嵌套工作流。如果未提供,此 ID 将为 auto-generated,但您可以通过在触发器请求(请求触发器, HTTP 触发器或 webhook 触发器)。