0

我想将来自 AppInsights 浏览器 SDK 的 pageViews 加入到后端的请求中。我没有看到有意义的外键,是否有一个 OOTB?还是我需要编写一些代码才能将它们连接在一起?

要添加上下文,我对 cloudRoleInstance(服务器)的 pageView 持续时间感兴趣,但 cloudRoleInstance 仅在请求时可用。

我尝试了以下,但没有奏效,我想操作ID不一样。

pageViews
| join (requests) on operation_Id
4

2 回答 2

0

我对完全相同的事情感兴趣,这就是我最终解决它的方式:

  1. 为来自服务器的每个响应设置一个“cloud_RoleInstance”cookie,以便客户端 javascript 知道哪个角色实例发送了最后一个响应。
  2. 将 TelemetryInitializer 添加到客户端 Application Insights 实例,该实例提取 RoleInstance cookie 并将其作为数据添加到客户端收集的遥测数据。

*我这样做而不是像其他答案所说的那样加入 operationId 的原因是因为 operationId 似乎跨越了服务器上的许多请求,有时需要半个小时。也许这是因为我们的单页应用程序的设置方式,但 operationId 对我不起作用。


代码

BaseController.cs::BeginExecute(我们有自己的 BaseController,所有其他控制器都继承自)

var roleInstanceCookie = requestContext.HttpContext.Response.Cookies.Get("cloud_RoleInstance");
roleInstanceCookie.Value = Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.CurrentRoleInstance.Id;
requestContext.HttpContext.Response.Cookies.Set(roleInstanceCookie);

ApplicationInsights.js(这包含我们加载 AI 的 AI 片段,当前使用 JS SDK 的 2.3.1 版)

// ... initialization snippet ...
appInsights.addTelemetryInitializer((envelope) => {
    envelope.data.cloud_RoleInstance = getCookie("cloud_RoleInstance");
});

然后 cloud_RoleInstance 将出现在 Application Insights 中 PageViews 的 customDimensions 列中

在此处输入图像描述

于 2020-01-17T15:47:04.587 回答
0

您可以通过操作 ID (operation_Id) 加入。

这是返回特定 operation_Id 的所有文档的查询:

union *
| where timestamp > ago(1d)
| where operation_Id == "<operation_id>"

在此处输入图像描述

于 2018-05-12T00:33:36.997 回答