首页 > 解决方案 > 使用 Azure 前门时缺少 UserId 属性的应用程序见解

问题描述

我的 .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  |
---------                          --------

我查看了请求标头,但没有看到 aUserId已传递到那里的迹象,并且对于前门或直接到我的 API 的请求实际上是相同的(主机名是那里的最大区别)。我认为前门使用与获取请求相同的标头来执行请求。

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

标签: azureazure-web-app-serviceazure-application-insightsazure-front-door

解决方案


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

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


推荐阅读