Application Insights Analytics 中的配对事件

Pair events in Application Insights Analytics

我需要使用以下消息模式应用见解跟踪:

我基本上是在监控一些设备和连接时间。如何编写 "pairs" 事件(D1 connected/disconnected、D2 connected/disconnected 等)的查询并评估 "sessions" 有多长?

我需要获取如下信息:

仅根据跟踪文本执行此操作会很困难。我建议使用自定义属性来协助完成此操作。

到目前为止,最简单的选择是发送一些附加属性以及包含所有所需信息的断开连接事件。喜欢:

// Start of session
var tt = new TraceTelemetry("D1 connected");
tt.Properties.Add("Event", "SessionStart");    
telemetryClient.TrackTrace(tt);
var startTime = DateTime.Now;

// Do your thing
....

tt = new TraceTelemetry("D1 disconnected");
tt.Properties.Add("Event", "SessionEnd");
tt.Properties.Add("SessionLength", (startTime - DateTime.Now).TotalMilliseconds.ToString());
telemetryClient.TrackTrace(tt);

自定义属性存储在事件的 customDimensions 字段中。

现在在 AI 分析中,您可以像这样查询这些值:

计数:

traces
| where customDimensions.Event == "SessionEnd"   
| summarize count() 

会话时长:

traces
| where customDimensions.Event == "SessionEnd"
| project message, customDimensions.Length

所有会话的总持续时间:

traces
| where customDimensions.Event == "SessionEnd"
| extend duration = tolong(customDimensions.SessionLength)
| summarize sum(duration)    

我还建议为所有发出的事件添加设备 ID 作为自定义 属性。这将使查询更容易。然后,您可以计算每个设备的最小、最大和平均会话长度,例如:

traces
| where customDimensions.Event == "SessionEnd"
| extend duration = tolong(customDimensions.SessionLength)
| extend device = tostring(customDimensions.DeviceName)
| summarize sum(duration) by device   

如果您也想加入开始事件或者不能或不会执行上述操作,则必须将开始事件与结束事件一起加入才能进行这些查询。您仍然需要使用一些自定义属性,因为单独查询文本会很困难,因为您随后需要分析文本以确定涉及什么事件和什么设备。

在此处 了解联接在 AI Analytics 中的工作原理。