Partager via


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 :

  • La requête a été arrêtée, et l'utilisateur a appelé la méthode Start. La requête se poursuit jusqu'à l'état Running sans intervention de l'utilisateur.

  • Une requête résistante était en cours d'exécution, et le serveur récupère suite à une défaillance. Pour changer l'état d'une requête, l'utilisateur doit appeler la méthode Start.

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.

Contrôle des événements via la requête CEP.

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]

Voir aussi

Concepts

Opérations (StreamInsight)