Ü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:
|
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.
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]