Überwachen von StreamInsight-Server und -Abfragen

Zur Statusüberwachung eines StreamInsight-Servers gehört die Überwachung der allgemeinen Integrität des Systems und der Abfrageleistung. Der Status eines StreamInsight-Servers wird erfasst, indem die StreamInsight-Abfragen, die auf dem Server ausgeführt werden, überwacht werden. Dabei wird überwacht, wie die Entitäten, die zu einer StreamInsight-Abfrage gehören, Systemressourcen verwenden.

In diesem Thema

  • Erstellen von Diagnoseansichten

  • Für welche Probleme kann mit Diagnoseansichten eine Problembehandlung durchgeführt werden?

  • Abfragestatus

  • Grundlegendes zur Überwachung auf Abfrageebene

  • Überwachen der Abfragelatenzzeit

  • Liste der Diagnoseeigenschaften

    • Operatordiagnose

    • Adapterdiagnose

    • Datenstromdiagnose

    • Abfragediagnose

    • Diagnose für veröffentlichte Datenströme

    • Serverdiagnose

  • Zugreifen auf Diagnose mit PowerShell

Erstellen von Diagnoseansichten

Mit der API für Diagnoseansichten können Sie Überwachungsinformationen abrufen. Damit Sie diese API verwenden können, muss der Verwaltungswebdienst im eingebetteten und eigenständige Modus der Serverbereitstellung aktiviert sein, und die Clientanwendung muss über diesen Webdienst mit dem Server verbunden sein. Weitere Informationen finden Sie unter Veröffentlichen auf dem StreamInsight-Server und Herstellen einer Verbindung mit dem Server.

Alternativ können Sie den Server und die Abfrage mit den Diagnosefunktionen im StreamInsight-Ereignisflussdebugger überwachen, der mithilfe der Diagnose-API die Ergebnisse in einer GUI-Schnittstelle zurückgibt. Sie sollten den Debugger mit einem Live-StreamInsight-Server verbinden und mit dem Objekt-Explorer die verschiedenen Objekte im Server anzeigen. Klicken Sie mit der rechten Maustaste auf ein Objekt, um die Laufzeitdiagnose dieser Entität abzurufen. Weitere Informationen finden Sie unter Verwenden des StreamInsight-Ereignisflussdebuggers.

Auf alle Objekte im Server wird mit Uniform Resource Identifier (URI) zugegriffen, die auf einem hierarchischen Namensgebungsschema beruhen. Dieses Namensgebungsschema beginnt mit dem Server und setzt sich bis zu den Abfrageoperatoren und Ereignisdatenströmen fort. Sie können Diagnose auf Serverebene für die folgenden Objekte abrufen:

  • cep:/Server

  • cep:/Server/PlanManager

  • cep:/Server/EventManager

  • cep:/Server/Query

Wenn Sie auf eine bestimmte Abfrage verweisen möchten, verwenden Sie das Benennungsschema cep:/Server/Anwendung/Anwendungsname/Abfrage/Abfragename.

Wenn Sie auf bestimmte Operatoren und Datenströme verweisen möchten, die zu einer Abfrage gehören, verwenden Sie die folgenden Benennungsschemas. Beachten Sie, dass Adapter in einer Abfrage auch als Operatoren betrachtet werden. Verwenden Sie die Operatornomenklatur für Adapter.

  • cep:/Server/Anwendung/Anwendungsname/Abfrage/Abfragename/Operator/Operatorname

  • cep:/Server/Anwendung/Anwendungsname/Abfrage/Abfragename/Datenstrom/Datenstromname

Falls Sie beispielsweise auf die Abfrage 'TrafficSensorQuery' in der Anwendung 'ObjectModelSample' verweisen möchten, verwenden Sie cep:/Server/Anwendung/ObjectModelSample/Abfrage/TrafficSensorQuery.

Die Diagnoseinformationen für diese Objekte werden durch Aufrufen der GetDiagnosticView()-Methode abgerufen. Sie können den Abruf von Diagnoseeinstellungen nach zwei Dimensionen filtern - nach dem Aspekt (Arbeitsspeicher, CPU und andere spezifische Attribute dieser Einstellung) und nach der (Bedeutungs-)Ebene. Sie können diese Filterbedingungen mit der SetDiagnosticsSettings()-Methode und der ClearDiagnosticSettings()-Methode festlegen, um bestimmte Einstellungen für eine angegebene Abfrage festzulegen oder zu löschen. Das folgende Beispiel stammt aus 'ExplicitServer.cs' und gibt die Diagnose über verschiedene Objekte für eine ausgeführte Abfrage aus. Im Beispiel wird von einer registrierten StreamInsight-Instanz mit dem Namen "MyInstance" ausgegangen.

public class ExplicitServer
{
        public static void Main(string[] args)
        {
            using (Server server = Server.Create("MyInstance"))
{
            try
            {
                // Create application in server

                // Create query logic as a query template

                // Register adapter factories

                // bind query to event producers and consumers

                // Create bound query that can be run

      // Create a tracer to output information on the console.
                TraceListener tracer = new ConsoleTraceListener();

                // Start the query 
                query.Start();

                // Retrieve diagnostic information from the StreamInsight server.
                RetrieveDiagnostics(server.GetDiagnosticView(new Uri("cep:/Server/EventManager")), tracer);
                RetrieveDiagnostics(server.GetDiagnosticView(new Uri("cep:/Server/PlanManager")), tracer);
                RetrieveDiagnostics(server.GetDiagnosticView(new Uri("cep:/Server/Application/ObjectModelSample/Query/TrafficSensorQuery")), tracer);

                DiagnosticSettings settings = new DiagnosticSettings(DiagnosticAspect.GenerateErrorReports, DiagnosticLevel.Always);
                server.SetDiagnosticSettings(new Uri("cep:/Server"), settings);

                tracer.WriteLine("Global Server Diagnostics");
                RetrieveDiagnostics(server.GetDiagnosticView(new Uri("cep:/Server/EventManager")), tracer);
                RetrieveDiagnostics(server.GetDiagnosticView(new Uri("cep:/Server/PlanManager")), tracer);
                RetrieveDiagnostics(server.GetDiagnosticView(new Uri("cep:/Server/Query")), tracer);
                
                tracer.WriteLine("Summary Query Diagnostics");
                RetrieveDiagnostics(server.GetDiagnosticView(new Uri("cep:/Server/Application/ObjectModelSample/Query/TrafficSensorQuery")), tracer);
                tracer.WriteLine("Operator Diagnostics");
                RetrieveDiagnostics(server.GetDiagnosticView(new Uri("cep:/Server/Application/ObjectModelSample/Query/TrafficSensorQuery/Operator/sensorInput")), tracer);


                query.Stop();
            }
            catch (Exception e)
            {
                tracer.WriteLine(e.ToString());
            }
}
      }

        private static void RetrieveDiagnostics(DiagnosticView diagview, TraceListener traceListener)
        {
            // Display diagnostics for diagnostic view object
            traceListener.WriteLine("Diagnostic View for '" + diagview.ObjectName + "':");
            foreach (KeyValuePair<string, object> diagprop in diagview)
            {
                traceListener.WriteLine(" " + diagprop.Key + ": " + diagprop.Value);
            }
        }
}

Weitere Informationen zu der im vorhergehenden Beispiel verwendeten API finden Sie unter DiagnosticView. Weitere Informationen zum Verwenden von Ablaufverfolgungslistenern finden Sie unter Ablaufverfolgungslistener.

[OBEN]

Für welche Probleme kann mit Diagnoseansichten eine Problembehandlung durchgeführt werden?

Mit den Diagnoseansichten kann eine Problembehebung für verschiedene Arten von Fehlern in einer StreamInsight-Anwendung durchgeführt werden. Beispiel:

Fehlerursache

Symptom(e)

Benutzerdefinierte Erweiterung ist langsam

Hohe Systemlatenzzeit

Benutzerdefinierte Erweiterung hat eine Ausnahme ausgelöst

Blockierte oder abgebrochene Abfrage

Der Eingabeadapter liefert Daten nicht schnell genug

Hohe Datenlatenzzeit

Der Eingabeadapter erzeugt keine CTIs

Blockierte Abfrage

Der Ausgabeadapter ist zu langsam

Hohe Systemlatenzzeit

Allerdings können Probleme auf Serverebene oder Probleme im lokalen Netzwerk, die möglicherweise Einfluss auf die StreamInsight-Anwendungen haben, meist nicht mit Diagnoseansichten behandelt werden. Zu dieser Art von Fehlern gehören ein langsames Netzwerk, schlechte Datenträger-E/A-Leistung und ungenügender Speicherplatz oder Ressourcenkonflikte auf dem Server.

[OBEN]

Abfragestatus

Eine Abfrage durchläuft während ihrer Lebensdauer mehrere Status. Eine Beschreibung dieser Status finden Sie in der folgenden Tabelle.

Abfragestatus

Beschreibung

Beendet

Die Abfrage ist nicht länger aktiv. Ein Abfrageplan wird nicht beibehalten.

Dieser Status liegt üblicherweise nach einem Aufruf der Stop-Methode der Abfrage vor.

Initialisierung

Dieser Status liegt üblicherweise nach einem der folgenden Ereignisse vor:

  • Die Abfrage wurde beendet, und der Benutzer hat die Start-Methode aufgerufen. Die Abfrage wird ohne weitere Aktionen des Benutzers fortgesetzt, bis der Status Running erreicht ist.

  • Eine stabile Abfrage wurde ausgeführt, und der Server führt gerade eine Fehlerwiederherstellung durch. Um den Status der Abfrage zu ändern, muss der Benutzer die Start-Methode aufrufen.

Wird ausgeführt

Die Abfrage verarbeitet gerade Ereignisse.

Dieser Status liegt üblicherweise nach einem Aufruf der Start-Methode der Abfrage vor.

Prüfpunktausführung

Die Abfrage wird ausgeführt, und ein Prüfpunkt wird gerade verarbeitet.

Dieser Status liegt üblicherweise nach einem Aufruf der BeginCheckpoint-Methode vor.

Wird beendet

Der Benutzer hat die Beendigung der Abfrage angefordert.

Dieser Status liegt üblicherweise nach einem Aufruf der Stop-Methode der Abfrage vor.

Angehalten

Bei einer stabilen Abfrage ist ein Fehler während der Wiederherstellung aufgetreten, oder die Abfrage konnte nicht wiederhergestellt werden, weil der Server ohne konfigurierte Stabilität gestartet wurde.

Abgeschlossen

Die Abfrage wurde normal abgeschlossen. Das heißt, die Eingabeadapter haben Marker für das Ende des Datenstroms in die Warteschlange eingereiht, und die Ausgabeadapter haben diese Marker verarbeitet.

Abgebrochen

Ein Fehler ist aufgetreten. Die Abfrage ist nach wie vor im Plan-Manager verfügbar.

[OBEN]

Grundlegendes zur Überwachung auf Abfrageebene

Wenn Sie die Abfrageleistung im StreamInsight-Server überwachen, können Sie die Überwachungsattribute auf Abfrageebene verwenden, die die ManagementService-API bereitstellt. Die folgende Ereignisflussabbildung hilft Ihnen zu verstehen, wie Sie diese Überwachungsattribute verwenden können.

Überwachen von Ereignissen durch die CEP-Abfrage

Stellen Sie sich auf Grundlage der Abbildung vor, dass es vier Messpunkte gibt, die den Durchlauf von Ereignissen (von links nach rechts) vom Eingabeadapter durch die Abfrage zum Ausgabeadapter aufzeichnen. Auf Grundlage dieser Messpunkte kann die folgende Metrik abgeleitet werden:

  • Incoming – Zeichnet eingehende Ereignisse über alle Eingabeadapter auf. Dies ist ein Maß für die Eingangsgeschwindigkeit von Ereignissen vom Eingabeadapter in die Abfrage.

  • Consumed – Zeichnet vom StreamInsight-Server genutzte Ereignisse auf, d.°h. über alle Operatoren hinweg, die den Eingabeadaptern direkt folgen. Dies ist ein Maß für die Ereignisse die sich in der Warteschlange des Servers befinden.

  • Produced – Zeichnet alle Ereignisse auf, die den letzten Operator unmittelbar vor dem Ausgabeadapter verlassen. Dies ist ein Maß für die Ereignisse, die aus der Warteschlange entfernt wurden.

  • Outgoing – Zeichnet alle Ereignisse auf, die den Ausgabeadapter verlassen. Dies ist ein Maß für die Ereignisabgangsrate vom StreamInsight-Server zur Senke.

Anhand der Abbildung können Sie das entsprechende Attribut bestimmen, das zurückgegeben wird, basierend auf dem Bereich des Ereignisflusses, für den Sie sich interessieren. Wenn Sie sich z. B. für die Anzahl der Ereignisse interessieren, die von der Abfrage genutzt wurden, verwenden Sie das Attribut QueryTotalConsumedEventCount; oder wenn Sie sich für die von der Abfrage erzeugten Ereignisse interessieren, verwenden Sie das Attribut QueryTotalProducedEventCount.

[OBEN]

Überwachen der Abfragelatenzzeit

Die Wartezeit ist ein auf der Grundlage aller Ereigniseingänge und -abgänge an einem bestimmten Gate (eingehend, erstellt, verarbeitet oder ausgehend) berechneter Wert. Sie können die durchschnittliche Wartezeit zwischen Messungen zu zwei beliebigen Zeitpunkten als (S2 – S1) / (C2 – C1) berechnen, wobei S die kumulierte Summe der Wartezeit an einem beliebigen Gate und C die Anzahl von Ereignissen an diesem Punkt ist.

Zur Berechnung der durchschnittlich verbrauchten Wartezeit messen Sie z. B. die kumulierte verbrauchte Wartezeit (QueryTotalConsumedEventLatency) am Zeitstempel t1 (S1) zusammen mit der Gesamtzahl der verbrauchten Ereignisse (QueryTotalConsumedEventCount) am Zeitstempel t1 (C1). Anschließend wiederholen Sie die gleichen Messungen mit einem anderen Zeitstempel (t2) und berechnen dann die durchschnittlich verbrauchte Ereigniswartezeit als (S2 – S1) / (C2 – C1).

Sie können die Attribute von QueryTotalIncomingEventCount bis hin zum Attribut QueryLastProducedCtiTimestamp verwenden, um zu bestimmen, wie effizient die Adapter bei der Übertragung von eingehenden oder ausgehenden Ereignissen in die bzw. von der Abfrage sind und wie schnell der StreamInsight-Server die Ereignisse verarbeiten kann.

Sie können den gesamten durch Operatoren verbrauchten Arbeitsspeicher bestimmen, indem Sie die Werte der Attribute OperatorEventMemory und OperatorIndexMemory addieren.

[OBEN]

Diagnoseeigenschaften

Diagnoseansichten geben Attribute auf mehreren Ebenen der Objektgranularität zurück: Server, Abfrage, veröffentlichte Datenströme, Operator und Adapter.

Die Diagnose ist so konzipiert, dass sie von Objekten feinerer Granularität zu Objekten gröberer Granularität in der Hierarchie aufwärts aggregieren kann. Für jede dieser Ebenen können Sie die folgenden Arten von Diagnoseinformationen abrufen:

  • Statische Informationen (S) geben die Eigenschaft des Objekts aus. Statische Informationen werden durch die unterschiedlichen Bedingungen der Abfrageausführung nicht geändert.

  • Nicht aggregierte Informationen (N) geben statistische Daten aus, die nicht von untergeordneten Objekten zu ihren übergeordneten Objekten aggregiert werden.

  • Aggregierte Informationen (A) geben aggregierte statistische Daten von untergeordneten Objekten zu ihrem übergeordneten Objekt aus.

Beachten Sie, dass alle unten aufgeführten Diagnoseansichtseigenschaften in DiagnosticViewProperty verfügbar sind.

Operatordiagnose

Metadaten

In der folgenden Tabelle sind die Metadateneigenschaften aufgeführt, die die einzelnen Operatoren in einer Abfrage beschreiben. Die Werte dieser Eigenschaften ändern sich nicht.

Eigenschaftsname

Typ

Beschreibung

OperatorId

Int64

Bezeichner für einen Operator.

OperatorKind

String

Operatortyp.

OperatorQueryId

Int64

Bezeichner für die Abfrage, in der sich der aktuelle Operator befindet.

OperatorEventType

String

XML-Darstellung des Ausgabetyps des Operators Für G&A ist dies der Typ des Gruppierungsfelds, nicht der der Ausgabe.

Nicht aggregierte Statistiken

In der folgenden Tabelle werden die Statistiken aufgeführt, die für alle logischen Instanzen eines Operators aggregiert werden. Die Aggregation erfolgt aber nicht bis hinauf in die Abfragestatistiken.

Eigenschaftsname

Typ

Beschreibung

OperatorTotalInputEventCount

Int64

Gesamtanzahl der Eingabeereignisse für den Operator.

OperatorMinInputEventCountAcrossWorkers

Int64

Die minimale Anzahl von Eingabeereignissen, die für alle Arbeitsthreads eines Operators verarbeitet wurden.

OperatorMaxInputEventCountAcrossWorkers

Int64

Die maximale Anzahl von Eingabeereignissen, die für alle Arbeitsthreads eines Operators verarbeitet wurden.

OperatorTotalOutputEventCount

Int64

Gesamtanzahl der Ausgabeereignisse für den Operator.

OperatorMinOutputEventCountAcrossWorkers

Int64

Die minimale Anzahl von Ausgabeereignissen, die für alle Arbeitsthreads eines Operators generiert wurden.

OperatorMaxOutputEventCountAcrossWorkers

Int64

Die maximale Anzahl von Ausgabeereignissen, die für alle Arbeitsthreads eines Operators generiert wurden.

OperatorLastOutputCtiTimestamp

DateTime

Der Zeitstempel (in Anwendungszeit) des letzten CTI, das vom Operator erzeugt wurde.

OperatorTotalOutputCtiCount

Int64

Die Gesamtanzahl von CTI-Ereignissen, die vom Operator erzeugt wurden.

OperatorMinOutputCtiCountAcrossWorkers

Int64

Die minimale Anzahl von CTI-Ereignissen, die für alle Arbeitsthreads eines Operators erzeugt wurden.

OperatorMaxOutputCtiCountAcrossWorkers

Int64

Die maximale Anzahl von CTI-Ereignissen, die für alle Arbeitsthreads eines Operators erzeugt wurden.

OperatorEventCountSinceLastCti

Int64

Die aggregierte Anzahl von Ereignissen, die vom Operator seit dem letzten CTI für alle Arbeitsthreads eines Operators erzeugt wurden.

Für den Cleanse-Operator ist dieser Wert üblicherweise 0 (null).

OperatorMinIndexEventCountAcrossWorkers

Int64

Die minimale Anzahl von Ereignissen in den Indizes für die Arbeitsthreads des Operators.

OperatorMaxIndexEventCountAcrossWorkers

Int64

Die maximale Anzahl von Ereignissen in den Indizes für die Arbeitsthreads des Operators.

OperatorMinEventMemoryAcrossWorkers

Int64

Der von den Ereignissen in den Indizes minimal verwendete Arbeitsspeicher (in Bytes) für alle Arbeitsthreads eines Operators.

OperatorMaxEventMemoryAcrossWorkers

Int64

Der von den Ereignissen in den Indizes maximal verwendete Arbeitsspeicher (in Bytes) für alle Arbeitsthreads eines Operators.

OperatorMinIndexMemoryAcrossWorkers

Int64

Der von den Indizes minimal verwendete Arbeitsspeicher (in Bytes) für alle Arbeitsthreads eines Operators.

OperatorMaxIndexMemoryAcrossWorkers

Int64

Der von den Indizes maximal verwendete Arbeitsspeicher (in Bytes) für alle Arbeitsthreads eines Operators.

OperatorNumberOfWorkers

Int32

Die Anzahl der Berechnungseinheiten, die den Operator ausführen.

OperatorGroupIdField

String

Der Name des Gruppen-ID-Felds für einen Group/Apply-Operator.

OperatorMinCpuUsageAcrossWorkers

Int64

Die minimale CPU-Zeit (in Millisekunden) für alle Arbeitsthreads des Operators.

OperatorMaxCpuUsageAcrossWorkers

Int64

Die maximale CPU-Zeit (in Millisekunden) für alle Arbeitsthreads des Operators.

OperatorMinEventAdjustedCount

Int64

Die minimale Anzahl von Ereignissen, die für alle Arbeitsthreads des Operators angepasst wurden.

OperatorMaxEventAdjustedCount

Int64

Die maximale Anzahl von Ereignissen, die für alle Arbeitsthreads des Operators angepasst wurden.

OperatorTotalEventAdjustedCount

Int64

Die Gesamtanzahl der Ereignisse, die von allen Arbeitsthreads des Operators angepasst wurden.

OperatorMinEventDroppedCount

Int64

Die minimale Anzahl von Ereignissen, die für die Arbeitsthreads des Operators gelöscht wurden.

OperatorMaxEventDroppedCount

Int64

Die maximale Anzahl von Ereignissen, die für die Arbeitsthreads des Operators gelöscht wurden.

OperatorTotalEventDroppedCount

Int64

Die Gesamtanzahl der Ereignisse, die von allen Arbeitsthreads des Operators gelöscht wurden.

Aggregierte Statistiken

In der folgenden Tabelle werden die Statistiken aufgeführt, die für alle logischen Instanzen eines Operators und bis hinauf in die Abfragestatistiken aggregiert werden.

Eigenschaftsname

Typ

Beschreibung

OperatorIndexEventCount

Int64

Der von den Indizes verwendete Arbeitsspeicher für alle aktiven logischen Instanzen des Operators.

OperatorEventMemory

Int64

Der von den Ereignissen in den Indizes verwendete Arbeitsspeicher (in Bytes) für alle logischen Instanzen des Operators.

OperatorIndexMemory

Int64

Der von den Indizes im Operator verwendete Arbeitsspeicher (in Bytes).

OperatorTotalCpuUsage

Int64

Die gesamte CPU-Verwendung des Operators in Millisekunden.

OperatorTotalScheduledCount

Int64

Die Gesamtanzahl der Operatorplanungen.

[OBEN]

Adapterdiagnose

In diesem Abschnitt werden Diagnoseeigenschaften aufgeführt, die spezifisch sind für Adapter. Adapter sind ein spezieller Operatortyp und beinhalten daher alle Diagnoseeigenschaften, die für Operatoren aufgeführt werden.

Metadaten

In der folgenden Tabelle sind die Metadateneigenschaften aufgeführt, die die einzelnen Adapter beschreiben. Hinweis: Der Wert der AdapterState-Eigenschaft kann sich ändern.

Eigenschaftsname

Typ

Beschreibung

AdapterStateTransitionHistory

String

Die XML-Darstellung der letzten Adapterübergänge für jeden Adapter.

Statistiken

In der folgenden Tabelle werden Statistiken aufgeführt, die spezifisch sind für Adapter.

Eigenschaftsname

Typ

Beschreibung

AdapterTotalSuspendCount

Int64

Der Wert, der angibt, wie oft alle Instanzen des Adapters insgesamt angehalten wurden.

AdapterMinSuspendCountAcrossWorkers

Int64

Der Wert, der angibt, wie oft eine Instanz des Adapters mindestens angehalten wurde.

AdapterMinSuspendCountAcrossWorkers

Int64

Der Wert, der angibt, wie oft eine Instanz des Adapters maximal angehalten wurde.

AdapterTotalTimeInSuspendedState

TimeSpan

Die Gesamtzeit, für die sich alle Instanzen des Adapters im angehaltenen Status befanden.

AdapterMinTimeInSuspendedStateAcrossWorkers

TimeSpan

Die minimale Zeit, die sich eine Instanz des Adapters im angehaltenen Status befand.

AdapterMaxTimeInSuspendedStateAcrossWorkers

TimeSpan

Die maximale Zeit, die sich eine Instanz des Adapters im angehaltenen Status befand.

AdapterTotalTimeInNonSuspendedState

TimeSpan

Die Gesamtzeit, für die sich alle Instanzen des Adapters in einem nicht angehaltenen Status befanden.

AdapterMinTimeInNonSuspendedStateAcrossWorkers

TimeSpan

Die minimale Zeit, die sich eine Instanz des Adapters in einem nicht angehaltenen Status befand.

AdapterMaxTimeInNonSuspendedStateAcrossWorkers

TimeSpan

Die maximale Zeit, die sich eine Instanz des Adapters in einem nicht angehaltenen Status befand.

AdapterFirstCtiTimestamp

DateTime

Der Zeitstempel des ersten CTI (in Anwendungszeit), das durch den Adapter erzeugt oder verbraucht wurde.

AdapterNumberOfRunningWorkers

Int32

Die Anzahl der Instanzen des Adapters im Status "Wird ausgeführt".

AdapterNumberOfStoppedWorkers

Int32

Die Anzahl der Instanzen des Adapters im Status "Beendet".

AdapterNumberOfSuspendedWorkers

Int32

Die Anzahl der Instanzen des Adapters im Status "Angehalten".

Adapterstabilität

Attribut

Information

Typ

.NET Framework-Typ

Beschreibung

InputAdapterLastCheckpointHighWaterMark

N

DateTime

Die Obergrenzenmarkierung der Anwendungszeit, die für den letzten Prüfpunkt dieses Datenstroms verwendet wurde. Damit wird ein Punkt im Eingabedatenstrom eindeutig bezeichnet, und der Datenstrom sollte bei der Wiederherstellung sämtliche Ereignisse nach diesem Punkt wiedergeben.

OutputAdapterLastCheckpointEventOffset

N

Int32

Die Anzahl der Ereignisse ab der Obergrenzenmarkierung der Anwendungszeit, die die Position im Ausgabedatenstrom angibt, an dem der letzte Prüfpunkt ausgeführt wurde.

OutputAdapterLastCheckpointHighWaterMark

N

DateTime

Die Obergrenzenmarkierung der Anwendungszeit für den Ausgabedatenstrom für den letzten von der Abfrage ausgeführten Prüfpunkt.

[OBEN]

Datenstromdiagnose

Metadaten

In der folgenden Tabelle sind die Metadateneigenschaften aufgeführt, die die einzelnen Datenströme in einer Abfrage beschreiben. Die Werte dieser Eigenschaften ändern sich nicht.

Eigenschaftsname

Typ

Beschreibung

StreamId

Int64

Die ID des Datenstroms.

StreamQueryId

Int64

Die ID der Abfrage für den Datenstrom.

StreamSourceOperatorId

Int64

Die ID des Quelloperators für den Datenstrom.

StreamTargetOperatorId

Int64

Die ID des Zieloperators für den Datenstrom.

StreamSystemInstance

Boolean

Boolescher Wert, der angibt, ob der Datenstrom ein Systemdatenstrom ist.

Nicht aggregierte Statistiken

In der folgenden Tabelle werden die Statistiken aufgeführt, die für alle logischen Instanzen eines Datenstroms aggregiert werden. Die Aggregation erfolgt aber nicht bis hinauf in die Abfragestatistiken.

Eigenschaftsname

Typ

Beschreibung

StreamTotalInputEventCount

Int64

Die Gesamtanzahl der Eingabeereignisse für den Datenstrom.

StreamMinEventCountAcrossWorkers

Int64

Die minimale Anzahl der Ereignisse in allen Instanzen des Datenstroms.

StreamMaxEventCountAcrossWorkers

Int64

Die maximale Anzahl der Ereignisse in allen Instanzen des Datenstroms.

StreamNumberOfWorkers

Int32

Die Anzahl der Instanzen dieses Datenstroms.

StreamMinInputEventCountAcrossWorkers

Int64

Die minimale Anzahl der Eingabeereignisse für die Instanzen des Datenstroms.

StreamMaxInputEventCountAcrossWorkers

Int64

Die maximale Anzahl der Eingabeereignisse für die Instanzen des Datenstroms.

StreamMinMemoryIncludingEventsAcrossWorkers

Int64

Der für die Instanzen des Datenstroms minimal verbrauchte Arbeitsspeicher (in Bytes).

StreamMaxMemoryIncludingEventsAcrossWorkers

Int64

Der für die Instanzen des Datenstroms maximal verbrauchte Arbeitsspeicher (in Bytes).

Aggregierte Statistiken

In der folgenden Tabelle werden die Statistiken aufgeführt, die für alle logischen Instanzen eines Datenstroms und bis hinauf in die Abfragestatistiken aggregiert werden.

Eigenschaftsname

Typ

Beschreibung

StreamEventCount

Int64

Die Gesamtzahl der Ereignisse für alle Instanzen des Datenstroms.

StreamMemoryIncludingEvents

Int64

Der vom Datenstrom und allen darin enthaltenen Ereignissen verwendete Arbeitsspeicher (in Bytes).

[OBEN]

Abfragediagnose

Abfragen enthalten die zusammengefassten Statistiken der enthaltenen Operatoren und Datenströme zusammen mit eigenen Statistiken. Im folgenden Abschnitt werden die für Abfragen spezifischen Statistiken ausführlich beschrieben.

Wenn eine Abfrage nicht ausgeführt wird, geben die Diagnosen nur die QueryState-Eigenschaft (entweder Angehalten oder Beendet) und die IsResilient-Eigenschaft (entweder true oder false) zurück.

Metadaten

In der folgenden Tabelle sind die Metadateneigenschaften aufgeführt, die die einzelnen Abfragen beschreiben. Die Werte dieser Eigenschaften ändern sich nicht.

Eigenschaftsname

Typ

Beschreibung

QueryState

String

Der aktuelle Status der Abfrage.

QueryStartTime

DateTime

Startzeit der Abfrage.

QueryEndTime

DateTime

Beendigungszeit der Abfrage.

QueryException

String

Die letzte Ausnahme, die in der Abfrage aufgetreten ist.

QueryCreationTime

DateTime

Die Zeit, zu der die Abfrageinstanz erstellt wurde.

QueryId

Int64

Die ID der Abfrage.

QuerySystemInstance

Boolean

Boolescher Wert, der angibt, ob die Abfrage eine Systemabfrage ist.

QueryInstanceGroupId

Int64

Die Instanzgruppen-ID der Abfrage.

Statistiken

In der folgenden Tabelle werden Statistiken aufgeführt, die spezifisch sind für Abfragen.

Eigenschaftsname

Typ

Beschreibung

QueryTotalIncomingEventCount

Int64

Die Gesamtanzahl der eingehenden Ereignisse für die Abfrage.

QueryTotalConsumedEventCount

Int64

Die Gesamtanzahl der von der Abfrage genutzten Ereignisse.

QueryTotalProducedEventCount

Int64

Die Gesamtanzahl der von der Abfrage erzeugten Ereignisse.

QueryTotalOutgoingEventCount

Int64

Die Gesamtanzahl der ausgehenden Ereignisse für die Abfrage.

QueryLastIncomingEventTimestamp

DateTime

Die Systemzeit des letzten eingehenden Ereignisses für die Abfrage.

QueryLastConsumedEventTimestamp

DateTime

Die Systemzeit des letzten genutzten Ereignisses für die Abfrage.

QueryLastProducedEventTimestamp

DateTime

Die Systemzeit des letzten erzeugten Ereignisses für die Abfrage.

QueryLastOutgoingEventTimestamp

DateTime

Die Systemzeit des letzten ausgehenden Ereignisses für die Abfrage.

QueryTotalConsumedEventLatency

Double

Die gesamte Wartezeit (in Millisekunden) aller von der Abfrage genutzten Ereignisse.

QueryTotalProducedEventLatency

Double

Die gesamte Wartezeit (in Millisekunden) aller von der Abfrage erzeugten Ereignisse.

QueryTotalOutgoingEventLatency

Double

Die gesamte Wartezeit (in Millisekunden) aller ausgehenden Ereignisse für die Abfrage.

QueryLastProducedCtiTimestamp

DateTime

Der Zeitstempel (in Anwendungszeit) des letzten CTI, das von der Abfrage erzeugt wurde.

Abfragestabilität

Attribut

Information

Typ

.NET Framework-Typ

Beschreibung

QueryLastCheckpointBeginTime

N

DateTime

Der Zeitpunkt, zu dem der letzte Prüfpunkt der Abfrage begonnen hat. Dieser Wert ist nicht vorhanden, wenn nie ein Prüfpunkt ausgeführt wurde oder wenn die Abfrage angehalten oder abgebrochen wurde.

QueryLastCheckpointEndTime

N

DateTime

Der Zeitpunkt, zu dem der letzte Prüfpunkt der Abfrage abgeschlossen wurde. Dieser Wert ist nicht vorhanden, wenn nie ein Prüfpunkt ausgeführt wurde oder wenn die Abfrage angehalten oder abgebrochen wurde.

QueryLastCheckpointSize

N

Int64

Die Größe des letzten Prüfpunkts der Abfrage in Bytes. Dieser Wert ist nicht vorhanden, wenn nie ein Prüfpunkt ausgeführt wurde.

QueryIsResilient

N

Boolean

True, wenn die Abfrage für Stabilität konfiguriert wurde (unabhängig vom Serverstatus). Andernfalls false.

[OBEN]

Diagnose für veröffentlichte Datenströme

In der folgenden Tabelle sind die Metriken aufgeführt, die für einen veröffentlichten Datenstrom zurückgegeben werden. Weitere Informationen zu veröffentlichten Datenströmen finden Sie unter Erstellen von Abfragen zur Laufzeit im Entwicklerhandbuch. Beachten Sie, dass jede Abfrage auch über einen impliziten veröffentlichten Datenstrom verfügt. Die Details dieses veröffentlichten Datenstroms werden als Teil der Abfragediagnose angezeigt.

Attribut

Informationstyp

Datentyp

.NET Framework-Typ

Beschreibung

PublishedStreamId

S

Zahl

Int64

Die ID des veröffentlichten Datenstroms.

PublishedStreamEventShape

S

String

String

Die Form des vom veröffentlichten Datenstrom verarbeiteten Ereignisses, entweder Punkt, Intervall oder Rand.

PublishedStreamEventType

S

String

String

Eine Zeichenfolge, die den im XML-Format dargestellten Ereignistyp enthält.

PublishedStreamProducerCount

S

Zahl

Int32

Anzahl der Producer von Ereignissen in den Datenstrom; Wert 0 oder 1.

PublishedStreamConsumerCount

S

Zahl

Int32

Anzahl der Consumer von Ereignissen aus dem Datenstrom.

PublishedStreamEventCount

S

Zahl

Int64

Anzahl der Ereignisse im veröffentlichten Datenstrom.

PublishedStreamTotalEventCount

S

Zahl

Int64

Gesamtanzahl der Ereignisse in allen veröffentlichten Datenströmen.

[OBEN]

Serverdiagnose

Server

In der folgenden Tabelle werden die serverweiten Metriken aufgeführt (StreamInsight-Server).

Attribut

Datentyp

.NET Framework-Typ

Beschreibung

ServerVersion

String

String

Die Assemblyversionszeichenfolge des Servers.

Ereignis-Manager

In der folgenden Tabelle sind die serverweiten Metriken (StreamInsight-Server) aufgeführt, die für den Ereignis-Manager ausgegeben werden können.

Attribut

Datentyp

.NET Framework-Typ

Beschreibung

AllEventsCount

Number

Int64

Anzahl der Ereignisse, die im StreamInsight-Server aktiv (zugeordnet) sind.

AllEventsMemory

Number

Int64

Gesamtspeichermenge, die von allen im System aktiven Ereignissen belegt wird.

Abfrage-Manager

In der folgenden Tabelle sind die serverweiten Metriken (StreamInsight-Server) aufgeführt, die für den Abfrageplan-Manager zurückgegeben werden können.

Attribut

Datentyp

.NET Framework-Typ

Beschreibung

AllQueriesCount

Number

Int64

Gesamtbetrag der laufenden, abgebrochenen oder angehaltenen Abfragen auf dem StreamInsight-Server (laufend und abgeschlossen). Eine abgeschlossene Abfrage impliziert, dass der Adapter die Stopped()-Methode als Reaktion auf eine Anforderung zum Abschluss der Abfrage aufgerufen hat oder dass die Abfrage abgebrochen wurde.

AllQueriesStreamCount

Number

Int64

Gesamtzahl der Operatoren in den Abfragen.

AllQueriesOperatorCount

Number

Int64

Gesamtzahl der Datenströme in den Abfragen.

Abfragen (serverweit)

Die serverweite (StreamInsight-Server) Abfragediagnosemetrik ist eine Union der drei Tabellen, die die aggregierte Metrik für die Abfrage, den Operator und den Datenstrom anzeigen. Außerdem wird eine abfrageweite Wartezeitmetrik von dieser Diagnoseansicht bereitgestellt. Zwei der Metriken werden hier erläutert, um ihre Bedeutung hervorzuheben.

Attribut

Datentyp

.NET Framework-Typ

Beschreibung

StreamEventCount

Number

Int64

Gesamtzahl der Ereignisse in allen logischen Datenströmen in allen Abfragen.

Dies ist die kumulierte Anzahl der Ereignisse aller Datenströme. Datenströme aus unterschiedlichen Abfragen können Verweise auf diese Ereignisse verwalten. Wenn Sie daher diese Anzahl über Abfragen addieren, kann der Eindruck entstehen, dass der Datenstromspeicher für die Gesamtereignisanzahl die physische Kapazität des Computers überschreitet, auf dem der StreamInsight-Server ausgeführt wird.

OperatorIndexEventCount

Number

Int64

Kumulierte Ereignisanzahl aller Operatoren.

Dies ist die kumulierte Anzahl der Ereignisse aller Operatoren. Operatoren anderer Abfragen können Verweise auf diese Ereignisse beibehalten. Wenn Sie diese Anzahl der Abfragen zusammenzählen, könnte es daher so scheinen, dass der Speicher für die Gesamtereignisanzahl die physische Kapazität des Computers überschreitet, der den StreamInsight-Server ausführt. Deshalb ist es wichtig, diese Zahl so zu interpretieren, dass sie einer bestimmten Abfrage zugeordnet wird und nicht für alle Abfragen gilt.

Serverstabilität

Attribut

Information

Typ

.NET Framework-Typ

Beschreibung

ServerLastRecoveryBeginTime

N

DateTime

Der Zeitpunkt, zu dem der Server seinen letzten Wiederherstellungsvorgang begonnen hat.

ServerLastRecoveryEndTime

N

DateTime

Der Zeitpunkt, zu dem der Server seinen letzten Wiederherstellungsvorgang abgeschlossen hat.

ServerIsResilient

N

Boolean

True, wenn der Server für Stabilität konfiguriert ist. Andernfalls false.

[OBEN]

Zugreifen auf Diagnose mit PowerShell

Sie können mithilfe von PowerShell auf Verwaltbarkeitsinformationen zugreifen oder Metadaten für eine laufende, gehostete Instanz von StreamInsight verwalten. In den folgenden Beispielen wird PowerShell 2.0 verwendet. Für Abfragen verwenden diese die Beispielanwendung ObjectModel.cs, ausgeführt auf einem StreamInsight-Host.

Im folgenden Beispiel werden die Microsoft.ComplexEventProcessing-DLLs aus dem Global Assembly Cache (GAC) geladen.

PS C:\> [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.ComplexEventProcessing")

Dies ist das Resultset.

GAC    Version     Location

------ ----------- -------------------------------------------------------------------------

True   v2.0.50727  C:\Windows\assembly\GAC_MSIL\Microsoft.ComplexEventProcessing\10.0.0.0__89845dcd8080cc91\Micro...

Im folgenden Beispiel werden die Methoden und die Eigenschaften, auf die auf der ausgeführten Instanz von StreamInsight zugegriffen werden kann, ausgegeben.

PS C:\> $server = [Microsoft.ComplexEventProcessing.Server]::Connect("https://localhost/StreamInsight")
PS C:\> $server | gm
   TypeName: Microsoft.ComplexEventProcessing.Server

Dies ist das Resultset.

Name                           MemberType Definition

------------------------------ ---------- ----------------

ClearDiagnosticSettings        Method     System.Void ClearDiagnosticSettings(System.Uri name)

CreateApplication              Method     Microsoft.ComplexEventProcessing.Application CreateApplication(string name)

CreateManagementService        Method     Microsoft.ComplexEventProcessing.ManagementService.IManagementService CreateManag...

Dispose                        Method     System.Void Dispose()

Equals                         Method     bool Equals(System.Object obj)

GetDiagnosticSettings          Method     Microsoft.ComplexEventProcessing.DiagnosticSettings GetDiagnosticSettings(System....

GetDiagnosticView              Method     Microsoft.ComplexEventProcessing.DiagnosticView GetDiagnosticView(System.Uri name)

GetHashCode                    Method     int GetHashCode()

GetType                        Method     type GetType()

SetDiagnosticSettings          Method     System.Void SetDiagnosticSettings(System.Uri name, Microsoft.ComplexEventProcessi...

ToString                       Method     string ToString()

Applications                   Property   System.Collections.Generic.IDictionary`2[[System.String, mscorlib, Version=2.0.0....

IsEmbedded                     Property   System.Boolean IsEmbedded {get;}

Im folgenden Beispiel wird die serverweite (StreamInsight-Server) Metrik für den Ereignis-Manager ausgegeben.

PS C:\> $dv = $server.GetDiagnosticView("cep:/Server/EventManager")
PS C:\> $dv

Dies ist das Resultset.

Key                           Value

------------------------------ -----

AllEventsCount                 19

AllEventsMemory                249856

Im folgenden Beispiel wird die serverweite (StreamInsight-Server) Metrik für den Plan-Manager ausgegeben.

PS C:\> $dv = $server.GetDiagnosticView("cep:/Server/PlanManager")
PS C:\> $dv

Dies ist das Resultset.

Key                    Value

----------------------- -----

AllQueriesCount         14

AllQueriesStreamCount   50

AllQueriesOperatorCount 38

Im folgenden Beispiel wird die Abfragemetrik für die Abfrage TrafficSensorQuery ausgegeben.

PS C:\> $dv = $server.GetDiagnosticView("cep:/Server/Application/ObjectModelSample/Query/TrafficSensorQuery")
PS C:\> $dv

Dies ist das Resultset.

Key                                          Value

------------------------------------------   --------------

QueryState                                  Suspended

QueryStartTime                              9/22/2009 5:34:02 PM

QueryEndTime                                9/22/2009 5:34:03 PM

StreamEventCount                            0

OperatorCount                               0

QueryTotalIncomingEventCount                553

QueryTotalConsumedEventCount                553

QueryTotalProducedEventCount                192

QueryTotalOutgoingEventCount                192

QueryLastIncomingEventSystemTime            9/22/2009 5:34:02 PM

QueryLastConsumedEventSystemTime            9/22/2009 5:34:02 PM

QueryLastProducedEventSystemTime            9/22/2009 5:34:03 PM

QueryLastOutgoingEventSystemTime            9/22/2009 5:34:03 PM

QueryTotalConsumedEventsLatency             14527.833

QueryTotalProducedEventsLatency             62457.0953

QueryTotalOutgoingEventsLatency             63553.2049

QueryLastProducedCTITimestamp               12/31/9999 11:59:59 PM

StreamMemoryIncludingEvents                 0

OperatorIndexEventCount                     0

OperatorEventMemory                         0

OperatorIndexMemory                         65870

OperatorTotalScheduledCount                 708

OperatorTotalCpuUsage                       670

[OBEN]

Siehe auch

Konzepte

Vorgänge (StreamInsight)