Azure - App Insights - 如何在 Auth Id 中跟踪登录的用户名?

Don*_*dle 8 asp.net-mvc azure azure-application-insights

在 App Insights 遥测中跟踪登录用户名/ID 的最佳支持方法是什么?

用户名为“JonTester1”的用户说他 4 小时前访问的一些页面真的很慢。我如何才能看到JonTester1在 App Insights 中所做的一切以排除故障/知道他指的是哪些页面?

似乎User Id在 App Insights 中是一些 Azure 生成的匿名事物,例如u7gbhAzure 与它自己对同一用户的想法有关(通过 cookie?)。它根本不知道我们应用程序的用户名

我也看到了在应用程式深入分析一个单独的字段叫Auth Id(或user_AuthenticatedId某些地方),看起来到有时有实际的用户名,例如“JonTester1”填补了-但并不总是......虽然我没有看到任何提及的文档中的这个领域,似乎很有希望。我们的应用程序的代码/配置应该如何设置Auth Id以确保每个 App Insights 日志/遥测都已设置?

相关的 MS 文档:

类似的问题,但不要连接点/显示完整的解决方案:

我希望这个问题和答案可以解决这个问题;希望在文档方面比相关的 MS 文档做得更好......

Pet*_*ons 5

问题中的第一个链接列出了答案。它向您展示的是如何编写自定义遥测初始化程序。此类初始值设定项允许您添加或覆盖将随任何发送到 App Insights 的遥测数据一起发送的属性。

一旦您将它添加到配置中,无论是在代码中还是在配置文件中(请参阅答案中前面提到的文档),它将完成其工作,而无需您创建TelemtryClient. 这就是为什么你的这段文字对我来说没有意义:

[...] 和我看到的大多数野外示例实际上并不像这样,包括下面第三个链接中的 MS 文档自己的示例;他们改为硬编码得到一个新的 TelemtryClient()

您可以覆盖 UserId 的值或覆盖初始值设定项中的 AuthenticatedUserId。您可以像这样修改文档中给出的代码:

        if (requestTelemetry != null && !string.IsNullOrEmpty(requestTelemetry.Context.User.Id) &&
            (string.IsNullOrEmpty(telemetry.Context.User.Id) || string.IsNullOrEmpty(telemetry.Context.Session.Id)))
        {
            // Set the user id on the Application Insights telemetry item.
            telemetry.Context.User.AuthenticatedUserId = HttpContext.Current.User.Identity.Name;
        }
Run Code Online (Sandbox Code Playgroud)

然后,您可以通过转到您的 AI 资源 -> 搜索并单击一个项目来查看身份验证 ID 和用户 ID。确保先按“全部显示”,否则不会显示该字段。

在我们的示例中,以下屏幕截图中的身份验证 ID 设置为数据库中的用户 ID:

在此处输入图片说明

我们也从 azure 函数访问服务器,因此我们也设置了用户 ID 服务器端,因为在这种情况下没有涉及客户端。

通过初始化程序在 javascript 和服务器端这两个地方设置它都没有坏处。这样你就涵盖了所有场景。