Verwenden des StreamInsight-Ereignisflussdebuggers

Operative Systeme in Branchen wie Fertigung und Verfahrenssteuerung, Versorgung, Finanztransaktionen, Internet und IT-Überwachung generieren Ereignisdatenströme mit komplexen internen Beziehungen und Anforderungen an niedrige Latenzzeiten. Angesichts des zeitlichen Aspekts bei der Verarbeitung solcher Ereignisflüsse besteht eine der größten Herausforderungen in diesen Systemen darin, die Gültigkeit der Ergebnisse bei unterschiedlichem und dynamischem Datenstromverhalten zu bestimmen sowie im Fall von Fehlern eine Problembehandlung für die Abfrage durchzuführen.

Dies generiert eine Nachfrage nach Abfrageanalysetools, die die folgenden Anforderungen erfüllen:

  • Behandeln großer Datenmengen und Reduzieren des Problemsuchbereichs.

  • Behandeln strikter Konsistenzanforderungen.

  • Eine intuitive Verwendung, die Benutzern eine schnelle Diagnose oder Lösung ermöglicht.

Microsoft StreamInsight stellt eine eigenständige grafische Benutzeroberfläche für Ereignisflussdebugger bereit. Der StreamInsight-Ereignisflussdebugger ermöglicht es Ihnen, als Entwickler oder Administrator einer Anwendung zur komplexen Ereignisverarbeitung (Complex Event Processing, CEP) über eine StreamInsight-Abfrage den Fluss von Ereignissen zu überprüfen, zu debuggen sowie entsprechende Schlussfolgerungen zu ziehen. In diesem Thema werden die Funktionen des Ereignisflussdebuggers beschrieben und die Verfahren bereitgestellt, die Sie benötigen, um dieses Debugging- und Analysetool schnell verwenden zu können.

Grundlegendes zum Ereignisflussdebugging

Bevor der Ereignisflussdebugger erläutert wird, ist es wichtig, auf den wesentlichen Unterschied zwischen einem Ablaufsteuerungsdebugger (z. B. einem C#- oder C++-Debugger) und dem Ereignisflussdebugger hinzuweisen.

Beim Ablaufsteuerungsdebugging erstellt der Entwickler im Debugmodus ein in einer bestimmten Sprache geschriebenes Programm, aktiviert Breakpoints bei bestimmten Anweisungen oder Verknüpfungen in der Ablaufsteuerung des Programms, führt das Programm bis zu diesen Breakpoints aus, gewinnt Einsichten in den Code und den Status des Systems, führt Funktionen und Prozeduren im Einzelschritt- oder Prozedurschrittmodus aus, beobachtet Variablen usw., bis die Ausführung abgeschlossen ist. Zeitbezogene Überlegungen zu "Datenvariablen" (d. h. das Analysieren der Transformation dieser Variablen im zeitlichen Verlauf) sind eingeschränkt oder nicht vorhanden.

Im Gegensatz dazu umfasst das Ereignisflussdebugging das Analysieren eines Ereignisses im zeitlichen Verlauf, während es von einer Phase der CEP-Abfrage zur nächsten und innerhalb einer Abfragephase von einem Operator zum nächsten wechselt. Hier setzt das Debuggen ein Verständnis dafür voraus, wie sich ein Ereignis auf einen Datenstrom auswirkt, sobald es von einem bestimmten Operator übergeben wird, sowie dafür, wie neue Ereignisse als Ergebnis von Berechnungen für Ereignisse generiert werden, die die Eingabe eines Operators bilden. Das Hauptaugenmerk beim Ereignisflussdebugging liegt darauf, wie sich die Semantik des Operators (Filter, Project, Join, Aggregate, Multicast usw.) auf das Ereignis auswirkt, und nicht auf der Ausführung (Ablaufsteuerung) der Operatoren selbst. Daher hilft der Debugger, die Auswirkungen eines bestimmten Ereignisses auf andere Ereignisse sowie die Auswirkungen anderer Ereignisse auf das analysierte Ereignis zu verstehen.

Debug- und Überwachungsmodi

Der Ereignisflussdebugger ist ein eigenständiges ablaufverfolgungsbasiertes Ereignisdebugtool. Der Debugger dient zwei Zwecken:

  • Debuggen einer Ereignisfluss-Ablaufverfolgung. Die Debugsitzung kann auf Folgendem basieren:

    • Einer Ablaufverfolgung, die von einer Liveaufzeichnung einer bestimmten Funktionsabfrage generiert wird, wobei der Debugger mit einem Live-Server verbunden ist.

    • Einer Ablaufverfolgungsdatei, die außerhalb des Debuggers mit einem Befehlszeilen-Hilfsprogramm generiert wurde, wobei die Datei später in den Debugger geladen wird.

  • Überwachen des Servers. In diesem Modus stellt der Debugger einen Objekt-Explorer bereit, in dem System- und Anwendungsobjekte aufgelistet werden. Sie können für jede dieser Entitäten eine Funktionsdiagnose abrufen. Der Objekt-Explorer fungiert außerdem als Schnittstelle, über die Sie Abfragen zur Ablaufverfolgung aktivieren und deaktivieren sowie die Abfrageausführung operativ starten und beenden.

Um den Ereignisflussdebugger verwenden zu können, muss der Benutzer der Windows-Gruppe "Leistungsprotokollbenutzer" angehören. Damit kann der Benutzer Ablaufverfolgungen außerhalb des Debuggers mit trace.cmd sammeln oder Ereignisse einer Abfrage innerhalb des Debuggers aufzeichnen. Informationen zu den entsprechenden Schritten finden Sie im Abschnitt "Windows Management and Operations".

Wenn Sie StreamInsight erfolgreich installiert haben, empfiehlt es sich, dass Sie den Debugger starten und die Seite Start überprüfen, um mehr über die grundlegenden Funktionen des Tools zu erfahren. Um den Debugger zu starten, klicken Sie auf die Schaltfläche Start, zeigen Sie auf Alle Programme, klicken Sie auf Microsoft StreamInsight 1.1 und dann auf StreamInsight-Ereignisflussdebugger.

Debuggen einer StreamInsight-Abfrage

Sie können den Debugger als lokale oder als Remoteclientanwendung mit dem StreamInsight-Server verbinden und die Ereignisfluss-Ablaufverfolgung einer oder mehrerer Abfragen aufzeichnen und wiedergeben. Alternativ ist auch die Verwendung als eigenständige, vom Server getrennte Clientanwendung möglich, wobei Abfragen auf Grundlage von offline gesammelten Ereignisablaufverfolgungen analysiert werden. Dies bietet Ihnen die Flexibilität, eine bestimmte Abfrage zu debuggen, während sie betriebsbereit ist, oder eine Abfrage auf Grundlage historischer Ablaufverfolgungen ihrer Ausführungen erneut zu testen.

Liveaufzeichnung von Abfrageereignissen

Um Ereignisse einer derzeit ausgeführten Abfrage aufzuzeichnen, müssen Sie den Ereignisflussdebugger mit einem StreamInsight-Live-Server verbinden. Im folgenden Verfahren werden das Herstellen einer Verbindung mit einem Live-Server, das Öffnen einer derzeit ausgeführten Abfrage sowie das Aktivieren der Ablaufverfolgung für die Abfrage beschrieben.

  1. Als Voraussetzung müssen Sie (oder der Serveradministrator) den Webdienst für den Server aktivieren. Weitere Informationen über das Aktivieren des Webdiensts finden Sie unter Veröffentlichen auf dem StreamInsight-Server und Herstellen einer Verbindung mit dem Server.

  2. Bestätigen Sie, dass der Clientbenutzer über Berechtigungen verfügt, eine Verbindung zum Server herzustellen. Hierfür muss er ein Mitglied der jeweiligen StreamInsight-Benutzergruppe sein. Weitere Informationen finden Sie im Abschnitt "StreamInsight-Benutzergruppe" in Installation (StreamInsight).

  3. Klicken Sie im Debugger auf Datei und dann auf Verbindung mit Server herstellen. Geben Sie die Serverendpunktadresse ein. Der Standardendpunkt für einen installierten StreamInsight-Server lautet "https://localhost/StreamInsight/<instance_name>".

    Wenn der Server ordnungsgemäß für Verbindungen eingerichtet wurde, wird im Debugger im linken Bereich ein Objekt-Explorer angezeigt.

  4. Klicken Sie im Objekt-Explorer auf die Hierarchie der Objekte, bis die zu debuggende Abfrage angezeigt wird. Doppelklicken Sie auf das Abfrageobjekt. Dadurch wird das Abfragediagramm geöffnet, wie in der folgenden Abbildung gezeigt. In der Abbildung wird veranschaulicht, dass die Beispielabfrage "TrafficSensorQuery" derzeit ausgeführt wird.

    Abfragediagramm im Ereignisflussdebugger

    Abbildung 1 - Anzeigen einer Abfrage im Abfragediagramm

  5. Klicken Sie zum Aktivieren der Ablaufverfolgung für die Abfrage mit der rechten Maustaste auf die Abfrage, und wählen Sie Ablaufverfolgung aktivieren. Alternativ können Sie die Ablaufverfolgung programmgesteuert mithilfe einer API aktivieren. Weitere Informationen finden Sie unter Überwachen von StreamInsight-Server und -Abfragen.

  6. Um die in der Abfrage verarbeiteten Ereignisse aufzuzeichnen, klicken Sie auf die Schaltfläche Ereignisaufzeichnung starten. Hierdurch wird der Aufzeichnungsprozess gestartet, wie in der folgenden Abbildung gezeigt. Nachdem die Ereignisaufzeichnung einige Minuten ausgeführt wurde, klicken Sie auf Beenden.

    Aufzeichnen von Ereignissen im Workflow einer Abfrage

    Abbildung 2 - Aufzeichnen von Ereignissen in einer derzeit ausgeführten Abfrage

Hierdurch wird der Debugger in den in Abbildung 1 gezeigten Status versetzt. Zu diesem Zeitpunkt können Sie das im Debugger bereitgestellte Abfrageanalysetool verwenden. Die Analysefunktionen werden im nächsten Abschnitt beschrieben.

Laden einer Datei zur Ereignisfluss-Ablaufverfolgung (EFT) oder einer Datei für die Ereignisablaufverfolgung für Windows (ETL)

StreamInsight unterstützt sowohl eigenständige als auch eingebettete Serverbereitstellungen. Wenn die Anwendung den Server einbettet und den Webdienst nicht aktiviert, kann eine Clientanwendung wie der Debugger keine Verbindung mit dem Server herstellen. Sie benötigen einen Mechanismus zum Debuggen und Diagnostizieren von Problemen in Abfragen, die unter solchen Bedingungen ausgeführt werden.

Um die Protokolle der Ereignisablaufverfolgung für einen laufenden StreamInsight-Server zu sammeln, können Sie das Hilfsprogramm trace.cmd verwenden, das in der StreamInsight-Installation enthalten ist. Im folgenden Verfahren werden das Erstellen einer Ablaufverfolgungsdatei und das Laden der Datei in den Ereignisflussdebugger beschrieben.

  1. Geben Sie bei laufendem Server und derzeitiger Ausführung der relevanten Abfrage bzw. Abfragen die folgende Anweisung an einer Windows-Eingabeaufforderung ein. Verwenden Sie die Dateierweiterung ".etl" beim Benennen der Ablaufverfolgungsdatei.

trace.cmd start <filename>.etl

  1. Nachdem die Abfrage über einen ausreichend langen Zeitraum ausgeführt wurde, beenden Sie die Ablaufverfolgung, indem Sie Folgendes verwenden:

trace.cmd stop <filename>.etl

  1. Um die resultierende Datei in den Debugger zu laden, klicken Sie auf Datei und dann auf Öffnen. Wechseln Sie im Dialogfeld Öffnen zum Speicherort von <filename>, und klicken Sie auf Öffnen. Das Abfragediagramm wird angezeigt, wie in der folgenden Abbildung veranschaulicht.

    Laden einer Abfrageablaufverfolgungs-Datei in den Debugger

    Abbildung 3 - Anzeigen einer aus einer Ablaufverfolgungsdatei geladenen Abfrage

Verglichen mit den in Abbildung 1 gezeigten Objekten, werden in dieser Abbildung weniger Entitäten im Objekt-Explorer angezeigt. Das liegt daran, dass der Debugger nicht mit dem Server verbunden ist. Insbesondere Diagnoseobjekte auf Serverebene wie Planer können nicht angezeigt werden, wenn der Debugger nicht mit dem Server verbunden ist.

Beachten Sie, dass in der Abbildung eine Statusanzeige auf der Statusleiste angezeigt wird, um den Ladefortschritt der ETL-Datei anzugeben. Im Rahmen des Ladevorgangs übersetzt der Debugger eine ETL-Datei in ihr proprietäres und komprimiertes EFT-Format.

Beachten Sie, dass das trace.cmd-Hilfsprogramm ein Skript auf Grundlage des Befehls Windows Logman ist. Logman verwendet im Gegenzug die Infrastruktur Ereignisablaufverfolgung für Windows (Event Trace for Windows, ETW) für die Ereignisauflistung. Möglicherweise werden Sie während der Ablaufverfolgung vom Debugger gewarnt, dass einige Ereignisse verloren gegangen sind. Dies liegt an den unzureichenden Einstellungen für ETW-Puffer und -Sitzungen. Um das Problem zu beheben, bearbeiten Sie den Befehl Logman in der Datei trace.cmd, und vergrößern Sie die in der -bs-Option angegebene Puffergröße (z. B., -bs 3000), oder vergrößern Sie die Anzahl der in der -nb-Option angegebenen Puffer. Weitere Informationen und Beispiele finden Sie in der Logman-Dokumentation.

Abfrageanalyse mithilfe des Ereignisfluss-Debuggertools

Der Ereignisflussdebugger stellt die folgenden Hauptfunktionen für die Abfrageanalyse bereit.

  • Möglichkeit, den Abfrageplan für eine angegebene Abfrage, die Abfrageoperatoren und die Ereignisdatenströme anzuzeigen. Dies hilft Ihnen dabei, die LINQ-Abfrage (Language Integrated Query) in Hinsicht auf den zugrunde liegenden Ereignisfluss und die Verarbeitungsknoten im Ereignisfluss zu verstehen.

  • Fähigkeit, alle Ereignisse hinsichtlich der Ein- und Ausgabe des komplexen Ereignisflusses zusammen mit den Zwischenergebnissen in jeder Phase der Berechnung zu überprüfen. Dies schließt die Ereignismetadaten in Hinsicht auf die Start- und Endzeitstempel sowie die Nutzlastfelder ein.

  • Fähigkeit, komplexe Ereignisflüsse anzuzeigen, die für horizontales Skalieren partitioniert sind. Der Debugger kann anzeigen, wie Ereignisse durch den Gruppierungsvorgang des Group/Apply-Operators partitioniert werden und wie Ereignisse im Apply-Operator transformiert werden.

  • Möglichkeit, einen Satz globaler Analysen auszuführen, die den Problemsuchbereich reduzieren oder Ereignisse in mehreren Phasen des Ereignisflusses korrelieren.

  • Fähigkeit, die Ablaufverfolgung einer Abfrageausführung im Verlauf der Zeit schrittweise zu durchlaufen, und Erkenntnisse darüber, wie Ereignisse durch eine Streamingabfrage weitergegeben werden.

  • Möglichkeit, Ereignisse zu analysieren, und Verständnis dafür, wie diese einen angegebenen Status erreicht haben, d. h., wie sich andere Ereignisse oder Operatoren auf ihre Ereigniszeiten und Nutzlasten ausgewirkt haben.

  • Fähigkeit, die Auswirkungen zu analysieren, die bestimmte Ereignisse auf Downstreamereignisse des aktuellen Operators haben. Dies bedeutet im Grunde, die zukünftige Verarbeitung der Ereignisse vorauszusehen, bis sich das Ereignis schließlich auf die Ausgabe auswirkt.

Um diese Funktionen zu implementieren, stellt der Debugger drei Funktionen für die Analyse bereit:

  • Wiedergeben – Mit dieser Funktion können Sie den Ereignisdatenstrom von Ereignis zu Ereignis durchlaufen und den Fortschritt von einem Operator zum nächsten beobachten. Alternativ können Sie Breakpoints bei bestimmten Operatoren im Abfragediagramm festlegen und den Debugger "ausführen" (d. h. den Ereignisfluss aktivieren), bis dieser Operator oder eine bestimmte Bedingung in diesem Operator erreicht wird.

  • Fehlerursachenanalyse – Mit dieser Funktion können Sie die Ursache prüfen bzw. die Folge von Vorgängen oder Änderungen, die den derzeitigen Zustand des Ereignisses verursacht haben.

  • Ereignispropagierungsanalyse – Mit dieser Funktion können Sie die Downstreamauswirkungen eines Ereignisses in Hinsicht auf die Änderungen analysieren, die das jeweilige Ereignis durchläuft, oder in Hinsicht darauf, wie es sich auf andere Ereignisse auswirkt oder die Generierung neuer Ereignisse verursacht. Diese Funktion stellt die Umkehrung der Fehlerursachenanalyse dar.

Verwenden der Wiedergabe

Sobald die Ereignisse entweder durch eine Liveaufzeichnung oder das Laden aus einer Ablaufverfolgungsprotokolldatei in den Debugger geladen wurden, besteht der nächste Schritt darin, diese Ereignisse zu ermitteln. Hierzu geben Sie die Ereignisse wieder, indem Sie auf das Uhr-Symbol klicken. Hierdurch wird ein Ereignisplayer angezeigt. Sie können die Ereignisse schrittweise durchlaufen, indem Sie auf das Symbol Weiter klicken. Alternativ können Sie einen Breakpoint bei einem Operator festlegen, indem Sie auf die Schaltfläche Optionsfeld auf der linken Seite eines Operators und dann im Ereignisplayer auf Weiter zum nächsten Haltepunkt klicken.

In der folgenden Abbildung wurde im Aggregationsoperator ein Breakpoint in der Apply-Verzweigung festgelegt, und der Ereignisfluss wurde aktiviert. Die grün hervorgehobene Linie im Aggregationsoperator zeigt den Fortschritt des Ereignisflusses bis zu diesem Punkt.

In Funktion 'Wiedergeben' angezeigte Ereignisse

Abbildung 4 - Festlegen eines Breakpoints im Aggregationsoperator

Da jetzt Ereignisse durch die Abfrage fließen, können Sie die einzelnen Operatoren erweitern, indem Sie auf die dreieckigen Symbole auf der rechten Seite eines Operators klicken. Sie können die Ereignisse weiterhin schrittweise durchlaufen und den Ereignisfortschritt anzeigen.

Verwenden der Fehlerursachenanalyse

Mit der Fehlerursachenanalyse können Sie analysieren, wie das Ereignis seinen aktuellen Status erreicht hat. Sie können die Fehlerursachenanalyse im Ereignisraster eines beliebigen Operators starten, indem Sie mit der rechten Maustaste auf das betreffende Ereignis klicken und Fehlerursachenanalyse auswählen.

Wenn Sie Fehlerursachenanalyse auswählen, zeigt der Debugger eine erweiterte Ansicht aller Operatoren mit den Ereignissen an, die möglicherweise Einfluss auf den aktuellen Status des analysierten Ereignisses hatten. Die folgende Abbildung zeigt z. B., wie der avgCount mit dem angegebenen Start- und Endzeitstempel entstanden ist. Klicken Sie hierzu im Kontextmenü mit der rechten Maustaste auf das markierte Ereignis, und wählen Sie Fehlerursachenanalyse. Der Debugger zeigt den Stapel der Fehlerursachenanalyse-Wiedergabe an, indem dem Kopf des Registerkarten-Abfragebereichs ein zweiter Pfeil hinzugefügt wird. Dies ist in der folgenden Abbildung dargestellt. Ein am Status des Ereignisses in dieser Phase der Abfrageverarbeitung beteiligtes Element ist ein Einfügevorgang im SensorInput-Operator mit dem VehicularCount-Wert 24.

Fehlerursachenanalyse

Abbildung 5 - Verwenden der Fehlerursachenanalyse

Verwenden der Ereignispropagierungsanalyse

Während es Aufgabe der Fehlerursachenanalyse ist, die Auswirkungen auf andere Ereignisse oder die Verarbeitungsschritte für ein Ereignis zu veranschaulichen, ist die Ereignispropagierungsanalyse eine vorausschauende Analyse zur Erläuterung der Auswirkungen, die das aktuelle Ereignis auf nachfolgende Ereignisse hat. Sie können die Ereignispropagierungsanalyse im Ereignisraster eines beliebigen Operators starten, indem Sie mit der rechten Maustaste auf das betreffende Ereignis klicken und Ereignispropagierungsanalyse auswählen.

Stapeln von Analysen

Analysen können übereinander gestapelt werden. Mit "Wiedergeben" können Sie das Debuggen starten. Zu einem beliebigen Zeitpunkt während der Analyse können Sie eine Fehlerursachenanalyse für ein bestimmtes Ereignis starten. In dieser Ansicht können Sie ein anderes Ereignis für die Propagierungsanalyse auswählen. Auf diese Weise können Sie die Analyse über einer anderen stapeln.

Sie können auch die gleiche Abfrage in mehreren Registerkarten öffnen und auf den verschiedenen Registerkarten unterschiedliche Analysen und Ansichten anzeigen. So haben Sie die Möglichkeit, die gleichen oder unterschiedliche Segmente der Abfrage mit verschiedenen Analysen zu vergleichen.

Operatoren

Jedes rechteckige Feld im Abfragediagramm stellt einen Operator dar: den Berechnungsknoten in einer StreamInsight-Abfrage. Die Abfragealgebra unterstützt verschiedene Operatoren wie Select (Filter), Project, Import, Export, Group/Apply, Join, Multicast, Union, Top-K, AlterLifetime, Advancetime und Cleanse. Jeder Operator ist mit seinem Namen aus den Servermetadaten und der Operatorart beschriftet.

Beachten Sie, dass die Operatoren im Abfragediagramm möglicherweise nicht 1:1 den Vorgängen entsprechen, die eine LINQ-Abfrage bilden. Ein Import-Operator stellt z. B. eine Eingabeadapterinstanz dar, und Export stellt die Ausgabeadapterinstanz dar. Cleanse ist ein interner Operator, der vom Abfrageoptimierer eingefügt wird, um nicht sortierte Daten zu behandeln. In der LINQ-Abfrage ist er nicht vorhanden. Auf ähnliche Weise stellen AdvanceTime und AlterLifetime zeitliche Kernvorgänge in der Abfragealgebra dar, die sich aus der Spezifikation der LINQ-Erweiterungen AlterEventDuration oder AlterEventLifeTime oder aus Fenstervorgängen in der Abfrage ergeben. Sie können eine LINQ-Abfrage jedoch problemlos mit dem resultierenden Abfragediagramm in Beziehung setzen.

Jedes Ereignisraster weist die folgenden Abschnitte auf:

Operatorbezeichnung

Der Titel des Rasters ist der von der Abfrage und dem Operatortyp bereitgestellte Operatorname.

Filter

In diesem Textfeld können Sie einen bedingten C#-Ausdruck angeben, um die relevanten Ereignisse zu filtern. Sie können z. B. nur Ereignisse untersuchen, die einen bestimmten Wert oder Zeitpunkt betreffen oder überschreiten.

Ereignisfelder

Der Rest des Ereignisrasterfensters zeigt die Felder eines Ereignisses an. Die Felder enthalten die vom Benutzer angegebene Ereignisart (Insert oder CTI) zusammen mit internen Ereignissen (Retract und Expand). Die standardmäßig angezeigten Feldspalten sind EventKind, StartTime, EndTime und die Nutzlastfelder des Ereignisses. Sie können Felder im Ereignisraster hinzufügen oder entfernen, indem Sie mit der rechten Maustaste auf die Headerleiste klicken, um das Kontextmenü anzuzeigen, oder auf Ansicht und auf Spalten klicken und dann die Feldnamen aktivieren oder deaktivieren. Beachten Sie, dass alle Zeitstempelfelder in koordinierter Weltzeit (UTC) angezeigt werden. Das Kontextmenü enthält Optionen zum Ändern der Zeitzone.

Die verfügbaren Felder werden in der Reihenfolge angezeigt, in der sie in der folgenden Tabelle aufgeführt sind. Die Ereignisse eines bestimmten Operators können in eine Datei exportiert werden, indem Sie mit der rechten Maustaste auf die Operatortitelleiste klicken und die Option Ereignisse in Datei schreiben auswählen. In der Regel nutzen Sie diese Möglichkeit, um Ereignisse zur weiteren Verarbeitung durch ein anderes Programm zu exportieren.

Feldname

Beschreibung

EventKind

Insert, Cti, Retract oder Expand.

StartTime

Die Startzeit des Ereignisses.

EndTime

Die Beendigungszeit des Ereignisses.

NewEndTime

Die geänderte Beendigungszeit des Ereignisses bei einigen besonderen Systemereignisarten. Sie sollten die Werte in dieser Spalte ignorieren.

Latency

Die Systemwartezeit des Ereignisses zum betreffenden Zeitpunkt. Dies ist die Zeitspanne zwischen dem Zeitpunkt, zu dem das eingehende Ereignis, das die Erstellung dieses Ereignisses verursacht hat, im System eingegangen ist, und dem Zeitpunkt, zu dem das Ereignis vom System erstellt wurde.

EnqueueTime

Die Systemzeit, zu der das Ereignis vom Operator erstellt wurde.

Ein oder mehrere Nutzlastfelder

Die im Ereignis verfügbaren benutzerdefinierten Datenfelder.

Group/Apply-Operator

Der Group/Apply-Operator ist ein besonderer Operator, der aus einem Grouping-Operator als Einstiegspunkt, einer Reihe von Apply-Verzweigungsoperatoren und einem Union-Gruppenoperator als umgebenden Operator bei Beendigung besteht. Wenn Sie den Gruppierungsknoten erweitern, werden alle Apply-Verzweigungen angezeigt, die mit den entsprechenden Gruppierungsschlüsselwerten verankert sind. Sie können den Group/Apply-Operator erweitern (oder reduzieren), indem Sie einfach die entsprechende Verzweigung aus dem Gruppierungsknoten auf den Zeichenbereich ziehen. Jetzt kann jeder Operator in der Verzweigung für weitere Analysen erweitert werden. Klicken Sie auf das Zeichen X in den einzelnen Verzweigungen, um sie wieder im Hauptbereich des Group- und Apply-Flussteildiagramms zu reduzieren. Die folgende Abbildung zeigt einen Group- und Apply-Knoten im Ereignisflussdebugger.

Erweitern eines Group-and-Analysis-Operators

Abbildung 6 - Anzeigen eines Group- und Apply-Knotens

Weitere nützliche Funktionen

Der Debugger bietet die folgenden nützlichen Funktionen:

  • Sie können den Zeichenbereich des Abfragediagramms vom vollständigen Abfragediagramm bis zu einzelnen Operatoren stufenlos vergrößern.

  • Alle Funktionen, die als Symbole zur Verfügung stehen, können auch als Optionen in den Kontextmenüs ausgewählt werden.

  • Wenn der Debugger mit dem Server verbunden ist, erfolgen alle vom Server zurückgegebenen Fehler unabhängig vom installierten Gebietsschema im Gebietsschema "en-US". Bei nicht englischen Gebietsschemas können diese Fehlermeldungen für zusätzliche Unterstützung und Diagnose verwendet werden.

  • Alle Operatoren können mit den Funktionen Alle erweitern und Alle reduzieren erweitert bzw. reduziert werden.

  • Die im Menü Extras verfügbaren Optionen ermöglichen es Ihnen, Standardeinstellungen für verschiedene Debuggereinstellungen festzulegen. Sie können auswählen, dass die Ereignisfluss-Ablaufverfolgungsdatei in Segmenten einer bestimmten Größe gelesen wird. Das Debuggen verläuft so zuverlässiger und reibungsloser. Sie können das DateTime-Format und TimeZone für alle Operatoren des Abfragediagramms angeben. Darüber hinaus können Sie die maximale und minimale Ereignisfluss-Aufzeichnungsdauer für das Szenario angeben, in dem der Debugger mit einem Server verbunden ist.

Überwachungsdashboard

Zusätzlich zu seiner Funktion als Debugtool dient der Ereignisflussdebugger als Überwachungstool für den StreamInsight-Server. Sie können den Debugger mit einem Live-Server verbinden, indem Sie die oben beschriebenen Schritte ausführen. Der Debugger zeigt einen Objekt-Explorer mit allen Serverentitäten an. Auf der obersten Ebene werden die Zusammenfassungsstatistiken für den Ereignis-Manager, den Abfrage-Manager und die Planer angezeigt. Um die Laufzeitdiagnose für eines dieser Objekte anzuzeigen, klicken Sie mit der rechten Maustaste auf das Symbol für das Objekt, und wählen Sie Diagnose aus.

Sie können auch durch die Hierarchie von Objekten navigieren und eine bestimmte Abfrage auswählen, die auf dem Server registriert wurde. Sie können die Ablaufverfolgung für eine Abfrage aktivieren oder deaktivieren und eine Abfrage starten oder beenden. Außerdem können Sie die Laufzeitdiagnose der Abfrage während der Ausführung der Abfrage abrufen. Auf dieser Oberfläche können Informationen zu den erzeugten und verwendeten Ereignissen, zu Wartezeit- und Durchsatzeigenschaften sowie Arbeitsspeicheranforderungen der Abfrage überwacht werden.

Diese Metriken können auch programmgesteuert mit Diagnoseansicht-APIs abgerufen werden. Eine Beschreibung der für die einzelnen Entitäten verfügbaren Diagnoseinformationen finden Sie unter Überwachen von StreamInsight-Server und -Abfragen.

Änderungsverlauf

Aktualisierter Inhalt

Ursache und Auflösungsinformationen wurden im Abschnitt "Laden einer Datei zur Ereignisfluss-Ablaufverfolgung (EFT) oder einer Datei für die Ereignisablaufverfolgung für Windows (ETL)" für die Warnung "Verlorene Ereignisse" hinzugefügt.

Schritt 2 wurde im Abschnitt "Liveaufzeichnung von Abfrageereignissen" hinzugefügt.