使用 Azure Front Door 时缺少 UserId 属性的应用程序见解

Posted

技术标签:

【中文标题】使用 Azure Front Door 时缺少 UserId 属性的应用程序见解【英文标题】:Application insights missing UserId property when using Azure Front Door 【发布时间】:2020-08-15 15:22:09 【问题描述】:

我的 .NET 核心 API 的几乎所有请求遥测都缺少 UserId 属性。我有一个 Angular SPA 通过 Azure Front Door 向我的 API 发出 HTTP 请求。唯一具有 UserId 属性的请求遥测是未通过 Azure 前门的流量。准确地说:它是 SignalR 直接对 API 的请求。我有一种感觉,我们的 Angular 应用程序将遥测传递给我们的 Application Insights(仅用于前端),而在我们的其他 Application Insights(仅用于后端)中,事情似乎并没有对齐。前端的依赖遥测与后端接收的请求遥测的 URL 不同。 Azure Front Door 设置为转发请求,因此它会将收到的请求再次发送到正确的目的地。

后端缺少 UserId 属性的 HTTP 请求示意图:

---------                          --------                       --------
|Angular|  GET domain.com/api1     | Front|  GET domain2.com/api  | Back |
|  app  | -----------------------> | Door | --------------------> | End  |
---------                          --------                       --------

在后端包含 UserId 属性的 HTTP 请求的示意图:

---------                          --------
|Angular|  GET domain2.com/signalr | Back |
|  app  | -----------------------> | End  |
---------                          --------

我查看了请求标头,但我没有看到任何迹象表明在那里传递了 UserId,并且它们对于前门或直接到我的 API 的请求实际上是相同的(主机名是那里的最大区别)。我认为前门使用相同的标头执行请求。

首先,我的假设是否正确?前端依赖跟踪的 URL 是否与后端接收的 URL 不同?如果是这样,我该怎么办?我想使用UserId 对特定用户在遇到问题之前执行的操作进行故障排除(“此用户会话的所有可用遥测”功能)。

【问题讨论】:

【参考方案1】:

我认为您的问题是关联前端和后端遥测。有一个属性 operation_id 可以在前端和后端遥测中找到,并可用于关联。您可能希望自定义前端和后端遥测以具有经过身份验证的用户 ID。查看以下有关关联遥测的资源。希望对您有所帮助。

https://docs.microsoft.com/en-us/azure/azure-monitor/app/correlation

【讨论】:

以上是关于使用 Azure Front Door 时缺少 UserId 属性的应用程序见解的主要内容,如果未能解决你的问题,请参考以下文章

Azure Front-Door - X-Azure-ClientIP 显示的是 IPV6 地址而不是 IPV4

Azure Front Door Visual Studio 远程调试

当后端请求成功时,如何调试从 Azure API 管理到 Front Door 的 502 Bad Gateway 错误响应?

Azure Front Door 服务忽略 403 - 应用停止错误

带有无服务器 Web 应用程序的 Azure Front Door

Azure Front Door、应用服务访问限制和 AD 身份验证