Monitoraggio delle query e del server StreamInsight
Il monitoraggio dello stato di un server StreamInsight include il rilevamento dell'integrità globale del sistema e delle prestazioni di esecuzione delle query. Lo stato di un server StreamInsight viene acquisito tramite il monitoraggio delle query di StreamInsight in esecuzione nel server e della modalità di utilizzo delle risorse di sistema da parte delle entità che compongono una query di StreamInsight.
In questo argomento
Creazione di viste diagnostiche
Problemi risolvibili con le viste diagnostiche
Stati della query
Informazioni sul monitoraggio a livello di query
Monitoraggio della latenza delle query
Elenco delle proprietà diagnostiche
Diagnostica degli operatori
Diagnostica degli adattatori
Diagnostica del flusso
Diagnostica delle query
Diagnostica del flusso pubblicato
Diagnostica del server
Accesso alla diagnostica tramite PowerShell
Creazione di viste diagnostiche
È possibile ottenere le informazioni di monitoraggio utilizzando l'API delle viste diagnostiche. Per utilizzare quest'API, è necessario che il servizio Web di gestione sia abilitato sia nella modalità incorporata che in quella autonoma di distribuzione del server e che l'applicazione client sia connessa al server tramite questo servizio Web. Per ulteriori informazioni, vedere Pubblicazione e connessione al server StreamInsight.
In alternativa, è possibile monitorare il server e le query tramite le caratteristiche di diagnostica disponibili in Debugger flusso eventi di StreamInsight, in cui viene utilizzata l'API di diagnostica per restituire i risultati in un'interfaccia GUI. È necessario connettere il debugger a un server StreamInsight attivo e utilizzare Esplora oggetti per visualizzare i diversi oggetti nel server. Fare clic con il pulsante destro del mouse su qualsiasi oggetto per ottenere dati diagnostici di runtime relativi a tale entità. Per ulteriori informazioni, vedere Utilizzo di Debugger flusso eventi di StreamInsight.
L'accesso a tutti gli oggetti nel server viene eseguito tramite URI (Uniform Resource Identifier) basati su uno schema di denominazione gerarchico. Questo schema di denominazione inizia con il server e continua fino agli operatori di query e ai flussi di eventi. È possibile recuperare dati diagnostici a livello di server dagli oggetti seguenti:
cep:/Server
cep:/Server/PlanManager
cep:/Server/EventManager
cep:/Server/Query
Per fare riferimento a una query specifica, utilizzare lo schema di denominazione cep:/Server/Application/NomeApplicazione/Query/NomeQuery.
Per fare riferimento a operatori e flussi specifici appartenenti a una query, utilizzare gli schemi di denominazione seguenti. Si noti che anche gli adattatori sono considerati operatori in una query. Utilizzare, per essi, la nomenclatura degli operatori.
cep:/Server/Application/NomeApplicazione/Query/NomeQuery/Operator/NomeOperatore
cep:/Server/Application/NomeApplicazione/Query/NomeQuery/Stream/NomeFlusso
Per fare riferimento, ad esempio, a una query denominata 'TrafficSensorQuery' nell'applicazione denominata 'ObjectModelSample', utilizzare cep:/Server/Application/ObjectModelSample/Query/TrafficSensorQuery.
Le informazioni di diagnostica per questi oggetti vengono ottenute effettuando una chiamata al metodo GetDiagnosticView(). È possibile filtrare il recupero delle impostazioni di diagnostica in corrispondenza di due dimensioni: aspetto (memoria, CPU e altri attributi specifici dell'impostazione) e livello (di criticità). È possibile impostare le condizioni di filtro utilizzando i metodi SetDiagnosticsSettings() e ClearDiagnosticSettings() per specificare o cancellare impostazioni specifiche per una determinata query. L'esempio seguente è tratto dall'esempio "ExplicitServer.cs" e restituisce dati diagnostici per vari oggetti per una query in esecuzione. Nell'esempio si presuppone un'istanza di StreamInsight registrata denominata "MyInstance".
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);
}
}
}
Per ulteriori informazioni sull'API utilizzata nell'esempio precedente, vedere DiagnosticView. Per ulteriori informazioni sull'utilizzo dei listener di traccia, vedere la pagina relativa ai listener di traccia.
[Torna all'inizio]
Problemi risolvibili con le viste diagnostiche
È possibile utilizzare le viste diagnostiche per risolvere diversi tipi di problemi di un'applicazione StreamInsight. Ad esempio:
Causa radice |
Sintomi |
---|---|
L'estensione definita dall'utente è lenta |
Latenza del sistema elevata |
È stata generata un'eccezione dall'estensione definita dall'utente |
Query bloccata o interrotta |
L'invio di dati da parte dell'adattatore di input è lento |
Latenza dei dati elevata |
Mancata generazione di CTI da parte dell'adattatore di input |
Query bloccata |
Funzionamento parziale dell'adattatore di output |
Latenza del sistema elevata |
In genere, tuttavia, non è possibile utilizzare le viste diagnostiche per risolvere problemi a livello di server o di rete locale che potrebbero influire sulle applicazioni StreamInsight. Nei problemi di questo tipo sono inclusi una rete lenta, un'operazione di I/O su disco lenta, una memoria insufficiente e una contesa delle risorse nel server.
[Torna all'inizio]
Stati della query
Per tutta la durata di una query sono previsti stati diversi, descritti nella tabella seguente:
Stato della query |
Descrizione |
---|---|
Arrestato |
La query non è più attiva. Non viene mantenuto alcun piano di query. Si tratta del tipico stato dopo una chiamata al metodo Stop della query. |
Inizializzazione in corso |
Si tratta del tipico stato dopo uno degli eventi seguenti:
|
In esecuzione |
È in corso l'elaborazione di eventi da parte della query. Si tratta del tipico stato dopo una chiamata al metodo Start della query. |
Checkpoint |
La query è in esecuzione ed è in corso un checkpoint. Si tratta del tipico stato dopo una chiamata al metodo BeginCheckpoint. |
Arresto in corso |
L'utente ha richiesto l'arresto della query. Si tratta del tipico stato dopo una chiamata al metodo Stop della query. |
Sospeso |
Il recupero di una query resiliente non è stato completato oppure non è stato possibile effettuare tale operazione poiché il server è stato avviato senza resilienza. |
Completato |
La query è stata completata in modo normale, ovvero gli adattatori di input hanno consentito l'accodamento dei marcatori di fine flusso e l'adattatore di output ne ha permesso l'utilizzo. |
Interrotto |
Si è verificato un errore. La query è ancora disponibile nella gestione piano. |
[Torna all'inizio]
Informazioni sul monitoraggio a livello di query
Quando si esegue il monitoraggio delle prestazioni di esecuzione delle query nel server StreamInsight, è possibile utilizzare gli attributi di monitoraggio a livello di query forniti dall'API ManagementService. La seguente illustrazione del flusso di eventi consente di comprendere in che modo è possibile utilizzare questi attributi di monitoraggio.
In base all'illustrazione, si supponga la presenza di quattro punti di misurazione che registrano il passaggio degli eventi (da sinistra a destra) dall'adattatore di input all'adattatore di output passando per la query. In base a tali punti di misurazione, è possibile derivare le metriche seguenti:
In entrata: vengono registrati gli eventi in entrata attraverso tutti gli adattatori di input. Si tratta di una misura della frequenza di arrivo degli eventi di input non elaborati nella query dall'adattatore di input.
Utilizzati: vengono registrati gli eventi utilizzati dal server StreamInsight, ovvero attraverso tutti gli operatori che seguono immediatamente gli adattatori di input. Si tratta di una misura degli eventi accodati nel server.
Prodotti: vengono registrati tutti gli eventi in uscita dall'ultimo operatore, che precede immediatamente l'adattatore di output. Si tratta di una misura degli eventi rimossi dalla coda della query.
In uscita: vengono registrati tutti gli eventi in uscita dall'adattatore di output. Si tratta di una misura della frequenza di uscita degli eventi dal server StreamInsight al sink.
Basandosi sull'illustrazione, è possibile determinare l'attributo appropriato da restituire in base all'area del flusso di eventi alla quale si è interessati. Se, ad esempio, si è interessati al numero di eventi utilizzati dalla query, utilizzare l'attributo QueryTotalConsumedEventCount oppure, se si è interessati agli eventi generati dalla query, utilizzare l'attributo QueryTotalProducedEventCount.
[Torna all'inizio]
Monitoraggio della latenza delle query
La latenza è un numero cumulativo calcolato per tutti gli eventi in entrata e in uscita in un particolare gate (in entrata, generati, utilizzati o in uscita). È possibile calcolare la latenza media tra le misure eseguite tra due punti nel tempo come (S2 – S1) / (C2 – C1), dove S è la somma cumulativa della latenza in un dato gate e C è il conteggio degli eventi in quel punto di gate.
Per calcolare, ad esempio, la latenza media degli eventi utilizzati, misurare la latenza cumulativa degli eventi utilizzati QueryTotalConsumedEventLatency in corrispondenza del timestamp t1 (S1) insieme al conteggio totale degli eventi utilizzati QueryTotalConsumedEventCount in corrispondenza del timestamp t1 (C1). Ripetere quindi le stesse misurazioni in corrispondenza di un timestamp diverso (t2) e calcolare la latenza media degli eventi utilizzati come (S2 – S1)/(C2 – C1).
È possibile utilizzare gli attributi da QueryTotalIncomingEventCount a QueryLastProducedCtiTimestamp per determinare l'efficienza degli adattatori nel trasferimento degli eventi nella query o fuori da essa e la frequenza di elaborazione degli eventi da parte del server StreamInsight.
È possibile determinare la memoria totale utilizzata dagli operatori sommando i valori degli attributi OperatorEventMemory e OperatorIndexMemory.
[Torna all'inizio]
Proprietà diagnostiche
Le viste diagnostiche consentono di restituire attributi a diversi livelli di granularità degli oggetti: server, query, flussi pubblicati, operatore e adattatore.
I dati diagnostici sono progettati in modo da consentire l'aggregazione da oggetti con granularità più fine a oggetti con granularità più grossolana, risalendo nella gerarchia. Per ognuno di questi livelli, è possibile ottenere i seguenti tipi di informazioni di diagnostica:
Informazioni statiche (S), che restituiscono la proprietà dell'oggetto. Tali informazioni non cambiano con il variare delle condizioni dell'operazione di query.
Informazioni non aggregate (N), che restituiscono statistiche non aggregate dagli oggetti figlio agli oggetti padre.
Le informazioni aggregate (A) consentono di restituire statistiche aggregate dagli oggetti figlio all'oggetto padre.
Si noti che tutte le proprietà della vista diagnostica elencate di seguito sono disponibili in DiagnosticViewProperty.
Diagnostica degli operatori
Metadati
Nella tabella seguente vengono elencate le proprietà di metadati che consentono di descrivere operatori singoli in una query. I valori per queste proprietà non cambiano.
Nome proprietà |
Tipo |
Descrizione |
---|---|---|
OperatorId |
Int64 |
Identificatore per un operatore. |
OperatorKind |
String |
Tipo di operatore. |
OperatorQueryId |
Int64 |
Identificatore per la query in cui risiede l'operatore corrente. |
OperatorEventType |
String |
Rappresentazione XML del tipo di output dell'operatore. Per G&A, si tratta del tipo di campo di raggruppamento, non del tipo di output. |
Statistiche non aggregate
Nella tabella seguente vengono elencate le statistiche aggregate in tutte le istanze logiche di un operatore, ma non nelle statistiche delle query.
Nome proprietà |
Tipo |
Descrizione |
---|---|---|
OperatorTotalInputEventCount |
Int64 |
Numero totale di eventi di input per l'operatore. |
OperatorMinInputEventCountAcrossWorkers |
Int64 |
Numero minimo di eventi di input elaborati tra tutti i thread di lavoro per un operatore. |
OperatorMaxInputEventCountAcrossWorkers |
Int64 |
Numero massimo di eventi di input elaborati tra tutti i thread di lavoro per un operatore. |
OperatorTotalOutputEventCount |
Int64 |
Numero totale di eventi di output per l'operatore. |
OperatorMinOutputEventCountAcrossWorkers |
Int64 |
Numero minimo di eventi di output generati tra tutti i thread di lavoro per un operatore. |
OperatorMaxOutputEventCountAcrossWorkers |
Int64 |
Numero massimo di eventi di output generati tra tutti i thread di lavoro per un operatore. |
OperatorLastOutputCtiTimestamp |
DateTime |
Timestamp (in tempo applicazione) dell'ultimo CTI generato dall'operatore. |
OperatorTotalOutputCtiCount |
Int64 |
Numero totale di eventi CTI generati dall'operatore. |
OperatorMinOutputCtiCountAcrossWorkers |
Int64 |
Numero minimo di eventi CTI generati tra tutti i thread di lavoro per un operatore. |
OperatorMaxOutputCtiCountAcrossWorkers |
Int64 |
Numero massimo di eventi CTI generati tra tutti i thread di lavoro per un operatore. |
OperatorEventCountSinceLastCti |
Int64 |
Numero aggregato di eventi generati dall'operatore a partire dall'ultimo CTI per tutti i thread di lavoro di un operatore. Per l'operatore Cleanse, questo valore è generalmente 0 (zero). |
OperatorMinIndexEventCountAcrossWorkers |
Int64 |
Numero minimo di eventi negli indici tra i thread di lavoro dell'operatore. |
OperatorMaxIndexEventCountAcrossWorkers |
Int64 |
Numero massimo di eventi negli indici tra i thread di lavoro dell'operatore. |
OperatorMinEventMemoryAcrossWorkers |
Int64 |
Quantità minima di memoria (in byte) utilizzata dagli eventi negli indici tra tutti i thread di lavoro di un operatore. |
OperatorMaxEventMemoryAcrossWorkers |
Int64 |
Quantità massima di memoria (in byte) utilizzata dagli eventi negli indici tra tutti i thread di lavoro di un operatore. |
OperatorMinIndexMemoryAcrossWorkers |
Int64 |
Quantità minima di memoria (in byte) utilizzata dagli indici tra tutti i thread di lavoro di un operatore. |
OperatorMaxIndexMemoryAcrossWorkers |
Int64 |
Quantità massima di memoria (in byte) utilizzata dagli indici tra tutti i thread di lavoro di un operatore. |
OperatorNumberOfWorkers |
Int32 |
Numero di unità di calcolo in cui l'operatore è in esecuzione. |
OperatorGroupIdField |
String |
Nome del campo ID gruppo per un operatore di raggruppamento e applicazione. |
OperatorMinCpuUsageAcrossWorkers |
Int64 |
Utilizzo minimo della CPU, in millisecondi, tra i thread di lavoro dell'operatore. |
OperatorMaxCpuUsageAcrossWorkers |
Int64 |
Utilizzo massimo della CPU, in millisecondi, tra i thread di lavoro dell'operatore. |
OperatorMinEventAdjustedCount |
Int64 |
Numero minimo di eventi modificati tra i thread di lavoro dell'operatore. |
OperatorMaxEventAdjustedCount |
Int64 |
Numero massimo di eventi modificati tra i thread di lavoro dell'operatore. |
OperatorTotalEventAdjustedCount |
Int64 |
Numero totale di eventi modificati tra i thread di lavoro dell'operatore. |
OperatorMinEventDroppedCount |
Int64 |
Numero minimo di eventi eliminati tra i thread di lavoro dell'operatore. |
OperatorMaxEventDroppedCount |
Int64 |
Numero massimo di eventi eliminati tra i thread di lavoro dell'operatore. |
OperatorTotalEventDroppedCount |
Int64 |
Numero totale di eventi eliminati tra i thread di lavoro dell'operatore. |
Statistiche aggregate
Nella tabella seguente vengono elencate le statistiche aggregate in tutte le istanze logiche di un operatore e nelle statistiche delle query.
Nome proprietà |
Tipo |
Descrizione |
---|---|---|
OperatorIndexEventCount |
Int64 |
Memoria utilizzata dagli indici in tutte le istanze logiche attive dell'operatore. |
OperatorEventMemory |
Int64 |
Quantità di memoria (in byte) utilizzata dagli eventi negli indici in tutte le istanze logiche dell'operatore. |
OperatorIndexMemory |
Int64 |
Quantità di memoria (in byte) utilizzata dagli indici nell'operatore. |
OperatorTotalCpuUsage |
Int64 |
Utilizzo totale della CPU dell'operatore in millisecondi. |
OperatorTotalScheduledCount |
Int64 |
Numero totale di pianificazioni relative all'operatore. |
[Torna all'inizio]
Diagnostica degli adattatori
In questa sezione vengono elencate le proprietà di diagnostica specifiche degli adattatori. Essendo un tipo speciale di operatore, gli adattatori comprendono tutte le proprietà di diagnostica elencate per gli operatori.
Metadati
Nella tabella seguente vengono elencate le proprietà di metadati che consentono di descrivere adattatori singoli. Nota: il valore della proprietà AdapterState può cambiare.
Nome proprietà |
Tipo |
Descrizione |
---|---|---|
AdapterStateTransitionHistory |
String |
Rappresentazione XML delle ultime transizioni dell'adattatore per ognuno di essi. |
Statistiche
Nella tabella seguente vengono elencate le statistiche specifiche degli adattatori.
Nome proprietà |
Tipo |
Descrizione |
---|---|---|
AdapterTotalSuspendCount |
Int64 |
Numero totale di volte in cui tutte le istanze dell'adattatore sono state sospese. |
AdapterMinSuspendCountAcrossWorkers |
Int64 |
Numero minimo di volte in cui un'istanza dell'adattatore è stata sospesa. |
AdapterMinSuspendCountAcrossWorkers |
Int64 |
Numero massimo di volte in cui un'istanza dell'adattatore è stata sospesa. |
AdapterTotalTimeInSuspendedState |
TimeSpan |
Tempo totale in cui tutte le istanze dell'adattatore sono state in uno stato sospeso. |
AdapterMinTimeInSuspendedStateAcrossWorkers |
TimeSpan |
Tempo minimo in cui un'istanza dell'adattatore è stata in uno stato sospeso. |
AdapterMaxTimeInSuspendedStateAcrossWorkers |
TimeSpan |
Tempo massimo in cui un'istanza dell'adattatore è stata in uno stato sospeso. |
AdapterTotalTimeInNonSuspendedState |
TimeSpan |
Tempo totale in cui tutte le istanze dell'adattatore sono state in uno stato non sospeso. |
AdapterMinTimeInNonSuspendedStateAcrossWorkers |
TimeSpan |
Tempo minimo in cui un'istanza dell'adattatore è stata in uno stato non sospeso. |
AdapterMaxTimeInNonSuspendedStateAcrossWorkers |
TimeSpan |
Tempo massimo in cui un'istanza dell'adattatore è stata in uno stato non sospeso. |
AdapterFirstCtiTimestamp |
DateTime |
Timestamp (in tempo applicazione) del primo CTI generato o utilizzato dall'adattatore. |
AdapterNumberOfRunningWorkers |
Int32 |
Numero di istanze dell'adattatore nello stato Running. |
AdapterNumberOfStoppedWorkers |
Int32 |
Numero di istanze dell'adattatore nello stato Stopped. |
AdapterNumberOfSuspendedWorkers |
Int32 |
Numero di istanze dell'adattatore nello stato Suspended. |
Resilienza dell'adattatore
Attributo |
Tipo di informazioni |
Tipo .NET Framework |
Descrizione |
---|---|---|---|
InputAdapterLastCheckpointHighWaterMark |
N |
DateTime |
Limite massimo di tempo applicazione utilizzato per l'ultimo checkpoint di questo flusso. In questo modo si identifica in maniera univoca un punto nel flusso di input dopo il quale il flusso deve consentire la riproduzione di tutti gli eventi durante il recupero. |
OutputAdapterLastCheckpointEventOffset |
N |
Int32 |
Numero di eventi a partire dal limite massimo di tempo applicazione tramite cui viene specificata la posizione nel flusso di output in cui è stato accettato l'ultimo checkpoint. |
OutputAdapterLastCheckpointHighWaterMark |
N |
DateTime |
Limite massimo di tempo applicazione del flusso di output per l'ultimo checkpoint accettato dalla query. |
[Torna all'inizio]
Diagnostica del flusso
Metadati
Nella tabella seguente vengono elencate le proprietà di metadati che consentono di descrivere flussi singoli in una query. I valori per queste proprietà non cambiano.
Nome proprietà |
Tipo |
Descrizione |
---|---|---|
StreamId |
Int64 |
ID del flusso. |
StreamQueryId |
Int64 |
ID della query per il flusso. |
StreamSourceOperatorId |
Int64 |
ID dell'operatore di origine per il flusso. |
StreamTargetOperatorId |
Int64 |
ID dell'operatore di destinazione per il flusso. |
StreamSystemInstance |
Booleano |
Valore booleano tramite cui viene indicato se il flusso è un flusso di sistema. |
Statistiche non aggregate
Nella tabella seguente vengono elencate le statistiche aggregate in tutte le istanze logiche di un flusso, ma non nelle statistiche delle query.
Nome proprietà |
Tipo |
Descrizione |
---|---|---|
StreamTotalInputEventCount |
Int64 |
Numero totale di eventi di input per il flusso. |
StreamMinEventCountAcrossWorkers |
Int64 |
Numero minimo di eventi in tutte le istanze del flusso. |
StreamMaxEventCountAcrossWorkers |
Int64 |
Numero massimo di eventi in tutte le istanze del flusso. |
StreamNumberOfWorkers |
Int32 |
Numero di istanze di questo flusso. |
StreamMinInputEventCountAcrossWorkers |
Int64 |
Numero minimo di eventi di input nelle istanze del flusso. |
StreamMaxInputEventCountAcrossWorkers |
Int64 |
Numero massimo di eventi di input nelle istanze del flusso. |
StreamMinMemoryIncludingEventsAcrossWorkers |
Int64 |
Quantità minima di memoria (in byte) utilizzata nelle istanze del flusso. |
StreamMaxMemoryIncludingEventsAcrossWorkers |
Int64 |
Quantità massima di memoria (in byte) utilizzata nelle istanze del flusso. |
Statistiche aggregate
Nella tabella seguente vengono elencate le statistiche aggregate in tutte le istanze logiche di un flusso e nelle statistiche delle query.
Nome proprietà |
Tipo |
Descrizione |
---|---|---|
StreamEventCount |
Int64 |
Numero totale di eventi in tutte le istanze del flusso. |
StreamMemoryIncludingEvents |
Int64 |
Quantità di memoria (in byte) utilizzata dal flusso e da tutti i relativi eventi. |
[Torna all'inizio]
Diagnostica delle query
Nelle query, oltre alle relative statistiche, sono contenute anche le statistiche di aggregazione degli operatori e dei flussi costituenti. Nelle sezioni seguenti vengono illustrate le statistiche specifiche delle query.
Quando una query non è in esecuzione, i dati diagnostici consentono di restituire solo le proprietà QueryState (Sospeso o Arrestato) e IsResilient (true o false).
Metadati
Nella tabella seguente vengono elencate le proprietà di metadati che consentono di descrivere query singole. I valori per queste proprietà non cambiano.
Nome proprietà |
Tipo |
Descrizione |
---|---|---|
QueryState |
String |
Stato corrente della query. |
QueryStartTime |
DateTime |
Ora di inizio della query. |
QueryEndTime |
DateTime |
Ora di fine della query. |
QueryException |
String |
Ultima eccezione che si è verificata nella query. |
QueryCreationTime |
DateTime |
Ora di creazione dell'istanza di query. |
QueryId |
Int64 |
ID della query. |
QuerySystemInstance |
Booleano |
Valore booleano tramite cui viene indicato se la query è una query di sistema. |
QueryInstanceGroupId |
Int64 |
ID del gruppo di istanze della query. |
Statistiche
Nella tabella seguente vengono elencate le statistiche specifiche della query.
Nome proprietà |
Tipo |
Descrizione |
---|---|---|
QueryTotalIncomingEventCount |
Int64 |
Numero totale di eventi in entrata per la query. |
QueryTotalConsumedEventCount |
Int64 |
Numero totale di eventi utilizzati dalla query. |
QueryTotalProducedEventCount |
Int64 |
Numero totale di eventi generati dalla query. |
QueryTotalOutgoingEventCount |
Int64 |
Numero totale di eventi in uscita per la query. |
QueryLastIncomingEventTimestamp |
DateTime |
Ora di sistema dell'ultimo evento in entrata per la query. |
QueryLastConsumedEventTimestamp |
DateTime |
Ora di sistema dell'ultimo evento utilizzato per la query. |
QueryLastProducedEventTimestamp |
DateTime |
Ora di sistema dell'ultimo evento generato per la query. |
QueryLastOutgoingEventTimestamp |
DateTime |
Ora di sistema dell'ultimo evento in uscita per la query. |
QueryTotalConsumedEventLatency |
Double |
Latenza totale (in millisecondi) di tutti gli eventi utilizzati dalla query. |
QueryTotalProducedEventLatency |
Double |
Latenza totale (in millisecondi) di tutti gli eventi generati dalla query. |
QueryTotalOutgoingEventLatency |
Double |
Latenza totale (in millisecondi) di tutti gli eventi in uscita per la query. |
QueryLastProducedCtiTimestamp |
DateTime |
Timestamp (in tempo applicazione) dell'ultimo CTI generato dalla query. |
Resilienza della query
Attributo |
Tipo di informazioni |
Tipo .NET Framework |
Descrizione |
---|---|---|---|
QueryLastCheckpointBeginTime |
N |
DateTime |
Ora in cui è iniziato l'ultimo checkpoint della query. Non sarà disponibile se non è mai stato accettato alcun checkpoint, nel caso in cui la query venga arrestata o interrotta. |
QueryLastCheckpointEndTime |
N |
DateTime |
Ora in cui è stato completato l'ultimo checkpoint della query. Non sarà disponibile se non è mai stato accettato alcun checkpoint, nel caso in cui la query venga arrestata o interrotta. |
QueryLastCheckpointSize |
N |
Int64 |
Dimensioni in byte dell'ultimo checkpoint della query. Non saranno disponibili se non è mai stato accettato alcun checkpoint. |
QueryIsResilient |
N |
Booleano |
True se la query è configurata per la resilienza (indipendentemente dallo stato del server). In caso contrario, False. |
[Torna all'inizio]
Diagnostica del flusso pubblicato
Nella tabella seguente vengono elencate le metriche che vengono restituite per un flusso pubblicato. Per ulteriori informazioni sui flussi pubblicati, vedere Creazione di query in fase di esecuzione nella Guida per gli sviluppatori. Si noti che ogni query dispone anche di un flusso pubblicato implicito; i relativi dettagli saranno visualizzati come parte della diagnostica della query.
Attributo |
Tipo di informazioni |
Tipo di dati |
Tipo .NET Framework |
Descrizione |
---|---|---|---|---|
PublishedStreamId |
S |
Number |
Int64 |
ID del flusso pubblicato. |
PublishedStreamEventShape |
S |
String |
String |
Forma dell'evento elaborato dal flusso pubblicato, ovvero uno tra punto, intervallo o limite. |
PublishedStreamEventType |
S |
String |
String |
Stringa contenente il nome di evento rappresentato in XML. |
PublishedStreamProducerCount |
S |
Number |
Int32 |
Conteggio di producer di eventi nel flusso; valore pari a 0 o 1. |
PublishedStreamConsumerCount |
S |
Number |
Int32 |
Conteggio di consumer di eventi del flusso. |
PublishedStreamEventCount |
S |
Number |
Int64 |
Conteggio di eventi nel flusso pubblicato. |
PublishedStreamTotalEventCount |
S |
Number |
Int64 |
Conteggio totale di eventi in tutti i flussi pubblicati. |
[Torna all'inizio]
Diagnostica del server
Server
Nella tabella seguente viene elencata la metrica per l'intero server (server StreamInsight).
Attributo |
Tipo di dati |
Tipo .NET Framework |
Descrizione |
---|---|---|---|
ServerVersion |
String |
String |
Stringa di versione dell'assembly del server. |
Gestione eventi
Nella tabella seguente vengono elencate le metriche per l'intero server (server StreamInsight) che possono essere restituite per la gestione eventi.
Attributo |
Tipo di dati |
Tipo .NET Framework |
Descrizione |
---|---|---|---|
AllEventsCount |
Number |
Int64 |
Conteggio degli eventi attivi (allocati) nel server StreamInsight. |
AllEventsMemory |
Number |
Int64 |
Quantità di memoria utilizzata da tutti gli eventi attivi nel sistema. |
Gestione query
Nella tabella seguente vengono elencate le metriche per l'intero server (server StreamInsight) che possono essere restituite per il gestore dei piani di query.
Attributo |
Tipo di dati |
Tipo .NET Framework |
Descrizione |
---|---|---|---|
AllQueriesCount |
Number |
Int64 |
Totale delle query in esecuzione, interrotte o sospese nel server StreamInsight (in esecuzione e finite). Una query finita implica che l'adattatore abbia richiamato il metodo Stopped() in risposta a una richiesta di arresto della query o che la query sia stata interrotta. |
AllQueriesStreamCount |
Number |
Int64 |
Operatori totali nelle query. |
AllQueriesOperatorCount |
Number |
Int64 |
Flussi totali nelle query. |
Query (per l'intero server)
Le metriche di diagnostica delle query per l'intero server (server StreamInsight) rappresentano un'unione delle tre tabelle in cui sono illustrate le metriche aggregate per la query, l'operatore e il flusso. In questa vista diagnostica sono inoltre fornite le metriche relative alla latenza a livello di query. Due di queste metriche sono illustrate di seguito per sottolinearne l'importanza.
Attributo |
Tipo di dati |
Tipo .NET Framework |
Descrizione |
---|---|---|---|
StreamEventCount |
Number |
Int64 |
Numero totale di eventi in tutti i flussi logici di tutte le query. Si tratta del conteggio cumulativo degli eventi per tutti i flussi. I flussi di query diverse possono mantenere riferimenti a questi eventi, pertanto se si somma questo conteggio per le query, potrebbe sembrare che la memoria di flusso per il conteggio totale degli eventi superi la capacità fisica del computer che esegue il server StreamInsight. |
OperatorIndexEventCount |
Number |
Int64 |
Conteggio cumulativo degli eventi in tutti gli operatori. Si tratta del conteggio cumulativo degli eventi in tutti gli operatori. Gli operatori dalle diverse query possono gestire i riferimenti a questi eventi. Se, pertanto, si somma questo conteggio per le query, potrebbe sembrare che la memoria per il conteggio totale degli eventi superi la capacità fisica del computer che esegue il server StreamInsight. Quindi è importante interpretare questo numero come localizzato a una particolare query e non tra tutte le query. |
Resilienza del server
Attributo |
Tipo di informazioni |
Tipo .NET Framework |
Descrizione |
---|---|---|---|
ServerLastRecoveryBeginTime |
N |
DateTime |
Ora in cui il server ha iniziato l'ultimo processo di recupero. |
ServerLastRecoveryEndTime |
N |
DateTime |
Ora in cui il server ha completato l'ultimo processo di recupero. |
ServerIsResilient |
N |
Booleano |
True se il server è configurato per la resilienza. In caso contrario, False. |
[Torna all'inizio]
Accesso alla diagnostica tramite PowerShell
È possibile utilizzare PowerShell per accedere alle informazioni sulla gestione o per gestire i metadati per un'istanza ospitata e in esecuzione di StreamInsight. Negli esempi seguenti viene utilizzato Powershell 2.0. Per eseguire una query, viene utilizzata l'applicazione di esempio ObjectModel.cs in esecuzione in un host di StreamInsight.
Nell'esempio seguente vengono caricate le DLL Microsoft.ComplexEventProcessing dalla Global Assembly Cache (GAC).
PS C:\> [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.ComplexEventProcessing")
Set di risultati:
GAC Version Location
------ ----------- -------------------------------------------------------------------------
True v2.0.50727 C:\Windows\assembly\GAC_MSIL\Microsoft.ComplexEventProcessing\10.0.0.0__89845dcd8080cc91\Micro...
Nell'esempio seguente vengono restituiti i metodi e le proprietà accessibili nell'istanza in esecuzione di StreamInsight.
PS C:\> $server = [Microsoft.ComplexEventProcessing.Server]::Connect("https://localhost/StreamInsight")
PS C:\> $server | gm
TypeName: Microsoft.ComplexEventProcessing.Server
Set di risultati:
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;}
Nell'esempio seguente vengono restituite le metriche per l'intero server (server StreamInsight) per la gestione eventi.
PS C:\> $dv = $server.GetDiagnosticView("cep:/Server/EventManager")
PS C:\> $dv
Set di risultati:
Key Value
------------------------------ -----
AllEventsCount 19
AllEventsMemory 249856
Nell'esempio seguente vengono restituite le metriche a livello di server (server StreamInsight) per il gestore dei piani.
PS C:\> $dv = $server.GetDiagnosticView("cep:/Server/PlanManager")
PS C:\> $dv
Set di risultati:
Key Value
----------------------- -----
AllQueriesCount 14
AllQueriesStreamCount 50
AllQueriesOperatorCount 38
Nell'esempio seguente vengono restituite le metriche per la query TrafficSensorQuery.
PS C:\> $dv = $server.GetDiagnosticView("cep:/Server/Application/ObjectModelSample/Query/TrafficSensorQuery")
PS C:\> $dv
Set di risultati:
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
[Torna all'inizio]