2017-01-12 4 views
1

Ich brauche Einblicke App Spuren mit folgendem Muster für Nachrichten:Pair Ereignisse in Application Insights Analytics

  • "D1"
  • "D2"
  • "D3"
  • „D1 getrennt "
  • "D3 getrennt"
  • "D1"
  • " D2 disconnecte verbunden d“
  • usw.

Ich Überwachung grundsätzlich einige Geräte und die Verbindungszeit. Wie kann ich eine Abfrage schreiben, die Ereignisse "koppelt" (D1 verbunden/getrennt, D2 verbunden/getrennt, etc.) und auswertet, wie lange die "Sitzungen" sind?

Ich würde müssen Informationen erhalten, wie:

  • Gesamtverbindungszeit für einen Tag
  • Verteilung der Verbindung für ein bestimmtes Gerät an einem Tag
  • usw.
+0

Erstellen Sie diese Spuren selbst mit der Methode 'TrackTrace' im SDK? Haben Sie benutzerdefinierte Eigenschaften zusammen mit der Ablaufverfolgung gesendet? –

+0

Ja, ich sende sie mir selbst. Würden Sie vorschlagen, beim Senden dieser Werte einen Sitzungswert anzuhängen? – fra

+0

ja, siehe meine Antwort. –

Antwort

1

Dies zu tun, nur basierend auf dem Text der Spur wird schwer sein. Ich empfehle, benutzerdefinierte Eigenschaften zu verwenden, um dies zu unterstützen.

Bei weitem die einfachste Möglichkeit ist, einige zusätzliche Eigenschaften zusammen mit dem getrennten Ereignis zu senden, die alle erforderlichen Informationen enthalten. Wie:

// 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); 

Benutzerdefinierte Eigenschaften werden im customDimensions Feld eines Ereignisses gespeichert.

Jetzt in AI Analytics können Sie diese Werte wie folgt abfragen:

Count:

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

Session Längen:

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

Gesamtdauer aller Sitzungen:

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

ich wou ld schlägt außerdem vor, die Geräte-ID als benutzerdefinierte Eigenschaft für alle ausgegebenen Ereignisse hinzuzufügen. Es wird die Abfrage erleichtern. Sie können dann berechnen min, max und durchschnittliche Sitzungslänge pro Gerät, zum Beispiel:

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

Wenn Sie die Startereignisse als auch beitreten wollen oder nicht oder wird das nicht tun oben, um die Startereignisse zu verbinden haben mit die Endereignisse, um diese Abfragen durchzuführen. Sie müssen weiterhin einige benutzerdefinierte Eigenschaften verwenden, da das Abfragen von Text allein schwierig ist, da Sie dann den Text analysieren müssen, um zu bestimmen, welches Ereignis und welches Gerät beteiligt ist.

werfen Sie einen Blick auf azure AI QUERY combine start and response to calculate average, um zu sehen, wie Joins in AI Analytics funktionieren.

Verwandte Themen