Contrôle du serveur et des requêtes StreamInsight
La supervision de l'état d'un serveur StreamInsight implique le suivi de l'intégrité globale du système et des performances des requêtes. L'état d'un serveur StreamInsight est capturé en analysant les requêtes StreamInsight exécutées sur le serveur et en analysant la façon dont les entités qui composent une requête StreamInsight utilisent les ressources système.
Dans cette rubrique
Création de vues de diagnostic
Quels problèmes puis-je résoudre avec les vues de diagnostic ?
États de requête
Fonctionnement de l'analyse au niveau des requêtes
Analyse de latence des requêtes
Liste des propriétés de diagnostic
Diagnostics d'opérateurs
Diagnostics d'adaptateurs
Diagnostics de flux
Diagnostics de requêtes
Diagnostics de flux de données publiés
Diagnostics de serveurs
Accès aux diagnostics à l'aide de PowerShell
Création de vues de diagnostic
Vous pouvez obtenir des informations d'analyse en utilisant une API de vues de diagnostic. Comme condition préalable à l'utilisation de cette API, vous devez avoir activé le service Web de gestion à la fois pour les modes incorporés et autonomes de déploiement du serveur et votre application cliente doit se connecter au serveur via ce service Web. Pour plus d'informations, consultez Publication et connexion au serveur StreamInsight.
Une autre solution consiste à surveiller le serveur et lancer une requête en utilisant les fonctionnalités de diagnostic du débogueur de flux d'événements StreamInsight qui utilise l'API de diagnostic pour retourner les résultats dans une interface GUI. Vous devez connecter le débogueur à un serveur StreamInsight de production et utiliser l'explorateur d'objets pour afficher les différents objets dans le serveur. Cliquez avec le bouton droit sur un objet pour obtenir le diagnostic d'exécution de cette entité. Pour plus d'informations, consultez Utilisation du débogueur de flux d'événements StreamInsight.
Tous les objets du serveur sont accessibles à partir d'URI basés sur un schéma d'affectation de nom hiérarchique. Ce schéma d'affectation de nom commence par le serveur, puis s'étend aux opérateurs de requête et aux flux d'événements. Vous pouvez récupérer les diagnostics de niveau serveur à partir des objets suivants :
cep:/Serveur
cep:/Serveur/Gestionnaire de plans
cep:/Serveur/Gestionnaire d'événements
cep:/Serveur/Requête
Pour vous référer à une requête spécifique, utilisez le schéma d'affectation de nom cep:/Serveur/Application/NomApplication/Requête/NomRequête.
Pour vous référer à un opérateur et à un flux de données spécifiques qui appartiennent à une requête, utilisez les schémas d'affectation de nom suivants. Notez que les adaptateurs sont également considérés des opérateurs dans une requête. Utilisez la nomenclature des opérateurs pour les adaptateurs.
cep:/Serveur/Application/NomApplication/Requête/NomRequête/Opérateur/NomOpérateur
cep:/Serveur/Application/NomApplication/Requête/NomRequête/Flux/NomFlux
Par exemple, pour référencer une requête nommée « TrafficSensorQuery » dans l'application nommée « ObjectModelSample », utilisez cep:/Serveur/Application/ObjectModelSample/Requête/TrafficSensorQuery.
Les informations de diagnostic pour ces objets sont obtenues en appelant la méthode GetDiagnosticView(). Vous pouvez filtrer la récupération des paramètres de diagnostic selon deux critères : l'aspect (mémoire, UC et autres attributs propres à ce paramètre) et le niveau (de criticité). Vous pouvez définir ces conditions de filtre à l'aide des méthodes SetDiagnosticsSettings() et ClearDiagnosticSettings() pour définir ou supprimer des paramètres spécifiques pour une requête particulière. L'exemple suivant est tiré de l'exemple « ExplicitServer.cs » et produit les diagnostics à travers différents objets pour une requête en cours d'exécution. L'exemple suppose une instance de StreamInsight enregistrée et nommée « 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);
}
}
}
Pour plus d'informations sur l'API utilisée dans l'exemple précédent, consultez DiagnosticView. Pour plus d'informations sur l'utilisation des écouteurs de suivi, consultez Écouteurs de suivi.
[HAUT]
Quels problèmes puis-je résoudre avec les vues de diagnostic ?
Vous pouvez utiliser les vues de diagnostic pour résoudre plusieurs types de problème avec une application StreamInsight. Par exemple :
Cause première |
Symptôme(s) : |
---|---|
Lenteur de l'extension définie par l'utilisateur |
Latence système élevée |
Exception déclenchée par une extension définie par l'utilisateur |
Requête suspendue ou abandonnée |
Alimentation lente des données par l'adaptateur d'entrée |
Latence des données élevée |
Pas de création de CTI par l'adaptateur d'entrée |
Requête suspendue |
Suivi non assuré par l'adaptateur de sortie |
Latence système élevée |
Toutefois, vous ne pouvez pas utiliser les vues de diagnostic pour résoudre les problèmes au niveau du serveur ou du réseau local qui risquent d'avoir une incidence sur vos applications StreamInsight. Lenteur du réseau, lenteur des E/S sur le disque, quantité de mémoire insuffisante et conflits des ressources sur le serveur sont des exemples de problèmes de ce type.
[HAUT]
États de requête
Une requête passe par plusieurs états. Ces états sont décrits dans le tableau ci-dessous.
État de requête |
Description |
---|---|
Arrêté |
La requête n'est plus active. Aucun plan de requête n'est conservé. Cet état se présente généralement suite à un appel de la méthode Stop de la requête. |
Initialisation en cours |
Cet état se présente généralement suite à l'un des événements suivants :
|
Exécution en cours |
La requête traite des événements. Cet état se présente généralement suite à un appel de la méthode Start de la requête. |
Points de contrôle |
La requête est en cours d'exécution, et un point de contrôle est en cours. Cet état se présente généralement suite à un appel de la méthode BeginCheckpoint. |
Arrêt en cours |
L'utilisateur a demandé l'arrêt de la requête. Cet état se présente généralement suite à un appel de la méthode Stop de la requête. |
Suspendu |
Une requête résistante n'a pas pu être récupérée, car le serveur a démarré sans résistance. |
Terminé |
La requête s'est déroulée normalement. Ce qui signifie que les adaptateurs d'entrée ont placé les marqueurs de fin de flux de données en file d'attente et que l'adaptateur de sortie les a consommés. |
Abandonné |
Une défaillance s'est produite. La requête est toujours disponible dans le gestionnaire de plans. |
[HAUT]
Fonctionnement de l'analyse au niveau des requêtes
Lors de l'analyse des performances des requêtes sur le serveur StreamInsight, vous pouvez utiliser les attributs fournis dans l'API ManagementService pour effectuer une analyse au niveau de la requête. L'exemple de flux d'événements suivant vous aide à comprendre comment utiliser ces attributs d'analyse.
En vous basant sur l'illustration, imaginez que quatre points de mesure enregistrent le passage des événements (de gauche à droite), depuis l'adaptateur d'entrée via la requête, jusqu'à l'adaptateur de sortie. En fonction de ces points de mesure, les mesures suivantes peuvent être dérivées :
Entrants - Enregistre les événements entrants pour l'ensemble des adaptateurs d'entrée. Il s'agit du taux d'arrivée brut d'événements d'entrée dans la requête à partir de l'adaptateur d'entrée.
Consommés - Enregistre les événements consommés par le serveur StreamInsight, autrement dit, par tous les opérateurs situés immédiatement après les adaptateurs d'entrée. Il s'agit du nombre d'événements mis en file d'attente sur le serveur.
Générés - Enregistre tous les événements qui quittent le dernier opérateur situé juste avant l'adaptateur de sortie. Il s'agit du nombre d'événements retirés de la file d'attente de la requête.
Sortants - Enregistre tous les événements qui quittent l'adaptateur de sortie. Il s'agit du taux de départ d'événements du serveur StreamInsight vers le récepteur.
En vous aidant de l'illustration, vous pouvez déterminer l'attribut approprié à retourner, selon la partie du flux d'événements qui vous intéresse. Par exemple, si vous voulez connaître le nombre d'événements consommés par la requête, utilisez l'attribut QueryTotalConsumedEventCount ou utilisez l'attribut QueryTotalProducedEventCount si vous voulez calculer le nombre d'événements générés par la requête.
[HAUT]
Analyse de latence des requêtes
La latence est un nombre cumulatif calculé pour l'ensemble des arrivées et départs d'événements à une porte d'accès spécifique (événements entrants, générés, consommés ou sortants). Vous pouvez calculer la latence moyenne entre les mesures effectuées à deux limites dans le temps en utilisant (S2 – S1) / (C2 – C1), où S représente le total cumulatif de latence à une porte d'accès donnée et C le nombre d'événements à ce point d'accès, respectivement.
Par exemple, pour calculer la latence consommée moyenne, mesurez la latence consommée cumulative (QueryTotalConsumedEventLatency) à l'horodateur t1 (S1) et le nombre total d'événements consommés (QueryTotalConsumedEventCount) à l'horodateur t1 (C1). Effectuez les mêmes mesures à un horodateur différent (t2), puis calculez la latence d'événements consommée moyenne sous la forme (S2 – S1)/ (C2 – C1).
Vous pouvez utiliser les attributs allant de QueryTotalIncomingEventCount à QueryLastProducedCtiTimestamp pour déterminer l'efficacité des adaptateurs lors du transfert d'événements vers/à partir de la requête, et le taux auquel le serveur StreamInsight peut traiter les événements.
Pour déterminer la quantité totale de mémoire consommée par les opérateurs, additionnez les valeurs des attributs OperatorEventMemory et OperatorIndexMemory.
[HAUT]
Propriétés de diagnostic
Les vues de diagnostic renvoient des attributs à plusieurs niveaux de granularité d'objet : serveur, requête, flux de données publiés, opérateur et adaptateur.
Les diagnostics sont conçus de manière à pouvoir être agrégés à partir d'objets ayant une granularité plus fine vers des objets ayant une granularité plus grossière dans la hiérarchie. Pour chacun de ces niveaux, vous pouvez obtenir les types d'informations de diagnostic suivants :
Les informations statiques (S) retournent la propriété de l'objet. Les informations statiques ne changent pas avec les conditions d'opération de requête variables.
Les informations non agrégées (N) retournent des statistiques non agrégées des objets enfants vers leurs objets parents.
Les informations agrégées (A) renvoient des statistiques agrégées des objets enfants vers leur objet parent.
Notez que toutes les propriétés de vue de diagnostic répertoriées ci-dessous sont disponibles dans DiagnosticViewProperty.
Diagnostics d'opérateurs
Métadonnées
Le tableau suivant répertorie les propriétés des métadonnées qui décrivent chaque opérateur dans une requête. Les valeurs de ces propriétés ne changent pas.
Nom de la propriété |
Type |
Description |
---|---|---|
OperatorId |
Int64 |
Identificateur de l'opérateur. |
OperatorKind |
String |
Type d'opérateur. |
OperatorQueryId |
Int64 |
Identificateur de la requête sur laquelle réside l'opérateur actuel. |
OperatorEventType |
String |
Représentation XML du type de sortie de l'opérateur. Pour G&A, il s'agit du type du champ de regroupement et non de la sortie. |
Statistiques non agrégées
Le tableau suivant répertorie les statistiques agrégées pour toutes les instances logiques d'un opérateur, mais qui ne sont pas agrégées dans les statistiques sur les requêtes.
Nom de la propriété |
Type |
Description |
---|---|---|
OperatorTotalInputEventCount |
Int64 |
Nombre total d'événements d'entrée pour l'opérateur. |
OperatorMinInputEventCountAcrossWorkers |
Int64 |
Nombre minimum d'événements d'entrée traités pour tous les utilisateurs d'un opérateur. |
OperatorMaxInputEventCountAcrossWorkers |
Int64 |
Nombre maximum d'événements d'entrée traités pour tous les utilisateurs d'un opérateur. |
OperatorTotalOutputEventCount |
Int64 |
Nombre total d'événements de sortie pour l'opérateur. |
OperatorMinOutputEventCountAcrossWorkers |
Int64 |
Nombre minimum d'événements de sortie générés pour tous les utilisateurs d'un opérateur. |
OperatorMaxOutputEventCountAcrossWorkers |
Int64 |
Nombre maximum d'événements de sortie générés pour tous les utilisateurs d'un opérateur. |
OperatorLastOutputCtiTimestamp |
DateTime |
Horodateur (en temps d'application) du dernier CTI produit par l'opérateur. |
OperatorTotalOutputCtiCount |
Int64 |
Nombre total d'événements CTI produits par l'opérateur. |
OperatorMinOutputCtiCountAcrossWorkers |
Int64 |
Nombre minimum d'événements CTI produits pour tous les utilisateurs d'un opérateur. |
OperatorMaxOutputCtiCountAcrossWorkers |
Int64 |
Nombre maximum d'événements CTI produits pour tous les utilisateurs d'un opérateur. |
OperatorEventCountSinceLastCti |
Int64 |
Nombre agrégé d'événements produits par l'opérateur depuis le dernier événement CTI pour tous les utilisateurs d'un opérateur. Pour l'opérateur de nettoyage (Cleanse), cette valeur est généralement 0 (zéro). |
OperatorMinIndexEventCountAcrossWorkers |
Int64 |
Nombre minimum d'événements dans les index pour tous les utilisateurs de l'opérateur. |
OperatorMaxIndexEventCountAcrossWorkers |
Int64 |
Nombre maximum d'événements dans les index pour tous les utilisateurs de l'opérateur. |
OperatorMinEventMemoryAcrossWorkers |
Int64 |
Quantité minimale de mémoire utilisée par les événements dans les index pour tous les utilisateurs d'un opérateur (en octets). |
OperatorMaxEventMemoryAcrossWorkers |
Int64 |
Quantité maximale de mémoire utilisée par les événements dans les index pour tous les utilisateurs d'un opérateur (en octets). |
OperatorMinIndexMemoryAcrossWorkers |
Int64 |
Quantité minimale de mémoire utilisée par les index pour tous les utilisateurs de l'opérateur (en octets). |
OperatorMaxIndexMemoryAcrossWorkers |
Int64 |
Quantité maximale de mémoire utilisée par les index pour tous les utilisateurs de l'opérateur (en octets). |
OperatorNumberOfWorkers |
Int32 |
Nombre d'unités de calcul qui exécutent l'opérateur. |
OperatorGroupIdField |
String |
Nom du champ d'ID de groupe d'un opérateur Group And Apply. |
OperatorMinCpuUsageAcrossWorkers |
Int64 |
Durée d'utilisation minimale du processeur pour les utilisateurs de l'opérateur (en millisecondes). |
OperatorMaxCpuUsageAcrossWorkers |
Int64 |
Durée d'utilisation maximale du processeur pour les utilisateurs de l'opérateur (en millisecondes). |
OperatorMinEventAdjustedCount |
Int64 |
Nombre minimum d'événements ajustés pour les utilisateurs de l'opérateur. |
OperatorMaxEventAdjustedCount |
Int64 |
Nombre maximum d'événements ajustés pour les utilisateurs de l'opérateur. |
OperatorTotalEventAdjustedCount |
Int64 |
Nombre total d'événements ajustés pour les utilisateurs de l'opérateur. |
OperatorMinEventDroppedCount |
Int64 |
Nombre minimum d'événements abandonnés pour les utilisateurs de l'opérateur. |
OperatorMaxEventDroppedCount |
Int64 |
Nombre maximum d'événements abandonnés pour les utilisateurs de l'opérateur. |
OperatorTotalEventDroppedCount |
Int64 |
Nombre total d'événements abandonnés pour les utilisateurs de l'opérateur. |
Statistiques agrégées
Le tableau suivant répertorie les statistiques agrégées pour toutes les instances logiques d'un opérateur et dans les statistiques sur les requêtes.
Nom de la propriété |
Type |
Description |
---|---|---|
OperatorIndexEventCount |
Int64 |
Mémoire utilisée par les index pour toutes les instances logiques actives d'un opérateur. |
OperatorEventMemory |
Int64 |
Quantité de mémoire utilisée par les événements dans les index pour toutes les instances logiques d'un opérateur (en octets). |
OperatorIndexMemory |
Int64 |
Quantité de mémoire (en octets) utilisée par les index dans l'opérateur. |
OperatorTotalCpuUsage |
Int64 |
Utilisation totale du processeur par l'opérateur en millisecondes. |
OperatorTotalScheduledCount |
Int64 |
Nombre total de planifications de l'opérateur. |
[HAUT]
Diagnostics d'adaptateurs
Cette section répertorie les propriétés de diagnostic propres aux adaptateurs. Les adaptateurs constituent un type spécifique d'opérateur et, par conséquent, ont toutes les propriétés de diagnostic des opérateurs.
Métadonnées
Le tableau suivant répertorie les propriétés des métadonnées qui décrivent chaque adaptateur. Remarque : la valeur de la propriété AdapterState peut changer.
Nom de la propriété |
Type |
Description |
---|---|---|
AdapterStateTransitionHistory |
String |
Représentation XML des dernières transitions pour chaque adaptateur. |
Statistiques
Le tableau suivant répertorie les statistiques propres aux adaptateurs.
Nom de la propriété |
Type |
Description |
---|---|---|
AdapterTotalSuspendCount |
Int64 |
Nombre total d'interruptions de toutes les instances de l'adaptateur. |
AdapterMinSuspendCountAcrossWorkers |
Int64 |
Nombre minimum d'interruptions d'une instance de l'adaptateur. |
AdapterMinSuspendCountAcrossWorkers |
Int64 |
Nombre maximum d'interruptions d'une instance de l'adaptateur. |
AdapterTotalTimeInSuspendedState |
TimeSpan |
Durée totale pendant laquelle toutes les instances de l'adaptateur sont restées à l'état suspendu. |
AdapterMinTimeInSuspendedStateAcrossWorkers |
TimeSpan |
Durée minimale pendant laquelle une instance de l'adaptateur est restée à l'état suspendu. |
AdapterMaxTimeInSuspendedStateAcrossWorkers |
TimeSpan |
Durée maximale pendant laquelle une instance de l'adaptateur est restée à l'état suspendu. |
AdapterTotalTimeInNonSuspendedState |
TimeSpan |
Durée totale pendant laquelle toutes les instances de l'adaptateur sont restées dans un état non suspendu. |
AdapterMinTimeInNonSuspendedStateAcrossWorkers |
TimeSpan |
Durée minimale pendant laquelle une instance de l'adaptateur est restée dans un état non suspendu. |
AdapterMaxTimeInNonSuspendedStateAcrossWorkers |
TimeSpan |
Durée maximale pendant laquelle une instance de l'adaptateur est restée dans un état non suspendu. |
AdapterFirstCtiTimestamp |
DateTime |
Horodateur du premier CTI (heure de l'application) produit ou consommé par l'adaptateur. |
AdapterNumberOfRunningWorkers |
Int32 |
Nombre d'instances de l'adaptateur dont l'état est En cours d'exécution. |
AdapterNumberOfStoppedWorkers |
Int32 |
Nombre d'instances de l'adaptateur dont l'état est Arrêté. |
AdapterNumberOfSuspendedWorkers |
Int32 |
Nombre d'instances de l'adaptateur dont l'état est Suspendu. |
Résistance de l'adaptateur
Attribut |
Type d'information |
Type .NET Framework |
Description |
---|---|---|---|
InputAdapterLastCheckpointHighWaterMark |
N |
DateTime |
Limite supérieure de l'heure de l'application utilisée pour le dernier point de contrôle de ce flux de données. Cette valeur identifie de manière unique un point dans le flux d'entrée. Le flux doit réexécuter tous les événements après ce point pendant la récupération. |
OutputAdapterLastCheckpointEventOffset |
N |
Int32 |
Nombre d'événements depuis la limite supérieure de l'heure de l'application indiquant à quel niveau dans le flux de sortie le dernier point de contrôle a été effectué. |
OutputAdapterLastCheckpointHighWaterMark |
N |
DateTime |
Limite supérieure de l'heure de l'application du flux de sortie pour le dernier point de contrôle effectué par la requête. |
[HAUT]
Diagnostics de flux
Métadonnées
Le tableau suivant répertorie les propriétés des métadonnées qui décrivent chaque flux de données dans une requête. Les valeurs de ces propriétés ne changent pas.
Nom de la propriété |
Type |
Description |
---|---|---|
StreamId |
Int64 |
ID du flux de données. |
StreamQueryId |
Int64 |
ID de la requête pour le flux de données. |
StreamSourceOperatorId |
Int64 |
ID de l'opérateur source pour le flux de données. |
StreamTargetOperatorId |
Int64 |
ID de l'opérateur cible pour le flux de données. |
StreamSystemInstance |
Boolean |
Valeur booléenne indiquant si le flux de données est un flux de données système. |
Statistiques non agrégées
Le tableau suivant répertorie les statistiques agrégées pour toutes les instances logiques d'un flux de données, mais qui ne sont pas agrégées dans les statistiques sur les requêtes.
Nom de la propriété |
Type |
Description |
---|---|---|
StreamTotalInputEventCount |
Int64 |
Nombre total d'événements d'entrée pour le flux de données. |
StreamMinEventCountAcrossWorkers |
Int64 |
Nombre minimum d'événements dans toutes les instances du flux de données. |
StreamMaxEventCountAcrossWorkers |
Int64 |
Nombre maximum d'événements dans toutes les instances du flux de données. |
StreamNumberOfWorkers |
Int32 |
Nombre d'instances de ce flux de données. |
StreamMinInputEventCountAcrossWorkers |
Int64 |
Nombre minimum d'événements d'entrée dans les instances du flux de données. |
StreamMaxInputEventCountAcrossWorkers |
Int64 |
Nombre maximum d'événements d'entrée dans toutes les instances du flux de données. |
StreamMinMemoryIncludingEventsAcrossWorkers |
Int64 |
Quantité de mémoire minimale utilisée par toutes les instances du flux de données (en octets). |
StreamMaxMemoryIncludingEventsAcrossWorkers |
Int64 |
Quantité de mémoire maximale utilisée par toutes les instances du flux de données (en octets). |
Statistiques agrégées
Le tableau suivant répertorie les statistiques agrégées pour toutes les instances logiques d'un flux de données et dans les statistiques sur les requêtes.
Nom de la propriété |
Type |
Description |
---|---|---|
StreamEventCount |
Int64 |
Nombre total d'événements dans toutes les instances du flux de données. |
StreamMemoryIncludingEvents |
Int64 |
Quantité de mémoire utilisée par le flux de données et tous les événements qu'il contient (en octets). |
[HAUT]
Diagnostics de requêtes
Les requêtes contiennent les statistiques agrégées des opérateurs et flux de données qui les constituent, ainsi que leurs propres statistiques. Les sections suivantes détaillent les statistiques propres aux requêtes.
Lorsqu'une requête n'est pas en cours d'exécution, les diagnostics ne renvoient que les propriétés QueryState (Suspendu ou Arrêté) et IsResilient (True ou False).
Métadonnées
Le tableau suivant répertorie les propriétés des métadonnées qui décrivent chaque requête. Les valeurs de ces propriétés ne changent pas.
Nom de la propriété |
Type |
Description |
---|---|---|
QueryState |
String |
État actuel de la requête. |
QueryStartTime |
DateTime |
Heure de début de la requête. |
QueryEndTime |
DateTime |
Heure de fin de la requête. |
QueryException |
String |
Dernière exception qui s'est produite dans la requête. |
QueryCreationTime |
DateTime |
Heure à laquelle l'instance de requête a été créée. |
QueryId |
Int64 |
ID de la requête. |
QuerySystemInstance |
Boolean |
Valeur booléenne indiquant si la requête est une requête système. |
QueryInstanceGroupId |
Int64 |
ID du groupe d'instances de la requête. |
Statistiques
Le tableau suivant répertorie les statistiques propres à une requête.
Nom de la propriété |
Type |
Description |
---|---|---|
QueryTotalIncomingEventCount |
Int64 |
Nombre total d'événements entrants pour la requête. |
QueryTotalConsumedEventCount |
Int64 |
Nombre total d'événements consommés par la requête. |
QueryTotalProducedEventCount |
Int64 |
Nombre total d'événements produits par la requête. |
QueryTotalOutgoingEventCount |
Int64 |
Nombre total d'événements sortants pour la requête. |
QueryLastIncomingEventTimestamp |
DateTime |
Heure système du dernier événement entrant pour la requête. |
QueryLastConsumedEventTimestamp |
DateTime |
Heure système du dernier événement consommé pour la requête. |
QueryLastProducedEventTimestamp |
DateTime |
Heure système du dernier événement produit pour la requête. |
QueryLastOutgoingEventTimestamp |
DateTime |
Heure système du dernier événement sortant pour la requête. |
QueryTotalConsumedEventLatency |
Double |
Latence totale (en millisecondes) de tous les événements consommés par la requête. |
QueryTotalProducedEventLatency |
Double |
Latence totale (en millisecondes) de tous les événements produits par la requête. |
QueryTotalOutgoingEventLatency |
Double |
Latence totale (en millisecondes) de tous les événements sortants pour la requête. |
QueryLastProducedCtiTimestamp |
DateTime |
Horodateur (en temps d'application) du dernier CTI produit par la requête. |
Résistance de la requête
Attribut |
Type d'information |
Type .NET Framework |
Description |
---|---|---|---|
QueryLastCheckpointBeginTime |
N |
DateTime |
Heure à laquelle le dernier point de contrôle de la requête a commencé. Cette valeur n'est pas indiquée si aucun point de contrôle n'a été effectué, si la requête a été arrêtée ou si la requête a été abandonnée. |
QueryLastCheckpointEndTime |
N |
DateTime |
Heure à laquelle le dernier point de contrôle de la requête s'est terminé. Cette valeur n'est pas indiquée si aucun point de contrôle n'a été effectué, si la requête a été arrêtée ou si la requête a été abandonnée. |
QueryLastCheckpointSize |
N |
Int64 |
Taille en octets du dernier point de contrôle de la requête. Cette valeur n'est pas indiquée si aucun point de contrôle n'a été effectué. |
QueryIsResilient |
N |
Boolean |
True si la requête est configurée pour être résistante (quel que soit l'état du serveur). False dans le cas contraire. |
[HAUT]
Diagnostics de flux de données publiés
Le tableau suivant répertorie les mesures renvoyées pour un flux de données publié. Consultez Composer des requêtes pendant l'exécution dans le Guide du développeur pour en savoir plus sur les flux publiés. Notez que chaque requête a également un flux publié implicite ; les détails de ce flux publié seront affichés dans le cadre du diagnostic de requête.
Attribut |
Type d'information |
Type de données |
Type .NET Framework |
Description |
---|---|---|---|---|
PublishedStreamId |
S |
Number |
Int64 |
ID du flux de données publié. |
PublishedStreamEventShape |
S |
String |
String |
Forme de l'événement traité par le flux publié : point, intervalle ou session. |
PublishedStreamEventType |
S |
String |
String |
Chaîne qui contient le type d'événement représenté en XML. |
PublishedStreamProducerCount |
S |
Number |
Int32 |
Nombre de producteurs d'événements dans le flux de données ; valeur 0 ou 1. |
PublishedStreamConsumerCount |
S |
Number |
Int32 |
Nombre de consommateurs d'événements provenant du flux. |
PublishedStreamEventCount |
S |
Number |
Int64 |
Nombre d'événements dans le flux publié. |
PublishedStreamTotalEventCount |
S |
Number |
Int64 |
Nombre total d'événements dans tous les flux de données publiés. |
[HAUT]
Diagnostics de serveurs
Server
Le tableau suivant répertorie les mesures à l'échelle du serveur (serveur StreamInsight).
Attribut |
Type de données |
Type .NET Framework |
Description |
---|---|---|---|
ServerVersion |
String |
String |
Chaîne de version de l'assembly du serveur. |
Gestionnaire d'événements
Le tableau suivant répertorie les mesures qui peuvent être renvoyées à l'échelle du serveur (serveur StreamInsight) pour le gestionnaire d'événements.
Attribut |
Type de données |
Type .NET Framework |
Description |
---|---|---|---|
AllEventsCount |
Number |
Int64 |
Nombre d'événements actifs (alloués) sur le serveur StreamInsight. |
AllEventsMemory |
Number |
Int64 |
Quantité de mémoire utilisée par tous les événements actifs dans le système. |
Gestionnaire de requêtes
Le tableau suivant répertorie les mesures qui peuvent être renvoyées à l'échelle du serveur (serveur StreamInsight) pour le gestionnaire de plans de requêtes.
Attribut |
Type de données |
Type .NET Framework |
Description |
---|---|---|---|
AllQueriesCount |
Number |
Int64 |
Nombre total de requêtes en cours d'exécution, abandonnées ou suspendues sur l'ensemble du serveur StreamInsight (en cours d'exécution ou terminées). Une requête terminée implique que l'adaptateur a appelé la méthode Stopped() suite à une demande d'arrêt de la requête, ou que la requête a été abandonnée. |
AllQueriesStreamCount |
Number |
Int64 |
Nombre total d'opérateurs dans les requêtes. |
AllQueriesOperatorCount |
Number |
Int64 |
Nombre total de flux de données dans les requêtes. |
Requêtes (à l'échelle du serveur)
Les mesures des diagnostics de requêtes à l'échelle du serveur (serveur StreamInsight) englobent les trois tableaux des mesures agrégées de la requête, de l'opérateur et du flux de données. De plus, les métriques de latence à l'échelle de la requête sont également fournies par cette vue de diagnostic. Deux des métriques sont expliquées ici pour en souligner l'importance.
Attribut |
Type de données |
Type .NET Framework |
Description |
---|---|---|---|
StreamEventCount |
Number |
Int64 |
Nombre total d'événements dans l'ensemble des flux logiques entre toutes les requêtes. Il s'agit du nombre cumulatif d'événements pour l'ensemble des flux. Les flux appartenant à des requêtes différentes peuvent conserver des références à ces événements. Par conséquent, si vous cumulez ce chiffre entre les requêtes, il peut sembler que la mémoire de flux utilisée par le nombre d'événements total dépasse la capacité physique de l'ordinateur qui exécute le serveur StreamInsight. |
OperatorIndexEventCount |
Number |
Int64 |
Nombre cumulatif d'événements pour l'ensemble des opérateurs. Il s'agit du nombre cumulatif d'événements pour la totalité des opérateurs. Les opérateurs de différentes requêtes peuvent conserver des références à ces événements. Par conséquent, si vous additionnez ce nombre pour l'ensemble des requêtes, il peut sembler que la mémoire utilisée par le nombre total d'événements dépasse la capacité physique de l'ordinateur exécutant le serveur StreamInsight. Il est donc important d'interpréter ce nombre comme se rapportant à une requête spécifique et non pas à l'ensemble des requêtes. |
Résistance du serveur
Attribut |
Type d'information |
Type .NET Framework |
Description |
---|---|---|---|
ServerLastRecoveryBeginTime |
N |
DateTime |
Heure à laquelle le serveur a commencé son dernier processus de restauration. |
ServerLastRecoveryEndTime |
N |
DateTime |
Heure à laquelle le serveur a terminé son dernier processus de restauration. |
ServerIsResilient |
N |
Boolean |
True si le serveur est configuré pour être résistant. False dans le cas contraire. |
[HAUT]
Accès aux diagnostics à l'aide de PowerShell
Vous pouvez utiliser PowerShell pour accéder aux informations de gestion ou gérer les métadonnées pour une instance hébergée de StreamInsight en cours d'exécution. Les exemples suivants utilisent PowerShell 2.0. Pour exécuter une requête, ils utilisent l'exemple d'application ObjectModel.cs, exécuté sur un hôte StreamInsight.
L'exemple suivant charge les DLL Microsoft.ComplexEventProcessing à partir du Global Assembly Cache.
PS C:\> [System.Reflection.Assembly]::LoadWithPartialName("Microsoft.ComplexEventProcessing")
Voici l'ensemble des résultats.
GAC Version Location
------ ----------- -------------------------------------------------------------------------
True v2.0.50727 C:\Windows\assembly\GAC_MSIL\Microsoft.ComplexEventProcessing\10.0.0.0__89845dcd8080cc91\Micro...
L'exemple suivant renvoie les méthodes et les propriétés accessibles sur l'instance de StreamInsight en cours d'exécution.
PS C:\> $server = [Microsoft.ComplexEventProcessing.Server]::Connect("https://localhost/StreamInsight")
PS C:\> $server | gm
TypeName: Microsoft.ComplexEventProcessing.Server
Voici l'ensemble des résultats.
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;}
L'exemple suivant renvoie les mesures du gestionnaire d'événements à l'échelle du serveur (serveur StreamInsight).
PS C:\> $dv = $server.GetDiagnosticView("cep:/Server/EventManager")
PS C:\> $dv
Voici l'ensemble des résultats.
Key Value
------------------------------ -----
AllEventsCount 19
AllEventsMemory 249856
L'exemple suivant retourne les métriques du gestionnaire de plans à l'échelle du serveur (serveur StreamInsight).
PS C:\> $dv = $server.GetDiagnosticView("cep:/Server/PlanManager")
PS C:\> $dv
Voici l'ensemble des résultats.
Key Value
----------------------- -----
AllQueriesCount 14
AllQueriesStreamCount 50
AllQueriesOperatorCount 38
L'exemple suivant retourne les métriques de la requête TrafficSensorQuery.
PS C:\> $dv = $server.GetDiagnosticView("cep:/Server/Application/ObjectModelSample/Query/TrafficSensorQuery")
PS C:\> $dv
Voici l'ensemble des résultats.
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
[HAUT]