Fonctionnalité de diagnostic pour Reliable Services avec état

La classe StatefulServiceBase de Reliable Services avec état dans Azure Service Fabric émet des événements EventSource qui peuvent être utilisés pour déboguer le service, fournir des informations sur le fonctionnement du runtime et vous aider lors du dépannage.

Événements EventSource

Le nom EventSource de la classe StatefulServiceBase de Reliable Services avec état est « Microsoft-ServiceFabric-Services ». Les événements issus de cette source d’événements s’affichent dans la fenêtre Événements de diagnostics lorsque le service est en cours de débogage dans Visual Studio.

PerfView, Diagnostics Azure et Microsoft TraceEvent Library sont des exemples d’outils et de technologies permettant de collecter et/ou d’afficher des événements EventSource.

Événements

Nom d'événement ID de l’événement Level Description de l'événement
StatefulRunAsyncInvocation 1 Informationnel Émis lorsque la tâche de service RunAsync est démarrée
StatefulRunAsyncCancellation 2 Informationnel Émis lorsque la tâche de service RunAsync est annulée
StatefulRunAsyncCompletion 3 Informationnel Émis lorsque la tâche de service RunAsync est terminée
StatefulRunAsyncSlowCancellation 4 Avertissement Émis lorsque la tâche de service RunAsync prend trop de temps pour terminer l'annulation
StatefulRunAsyncFailure 5 Error Émis lorsque la tâche de service RunAsync renvoie une exception

Interprétation des événements

Les événements StatefulRunAsyncInvocation, StatefulRunAsyncCompletion et StatefulRunAsyncCancellation sont utiles à l’enregistreur du service pour comprendre le cycle de vie d’un service, ainsi que le minutage lorsqu’un service démarre, est annulé ou se termine. Cette information peut être utile lors du débogage de problèmes du service ou pour comprendre le cycle de vie du service.

Les enregistreurs de service doivent prêter attention aux événements StatefulRunAsyncSlowCancellation et StatefulRunAsyncFailure qui indiquent des problèmes liés au service.

StatefulRunAsyncFailure est émis à chaque fois que la tâche RunAsync() du service lève une exception. En général, une exception levée indique une erreur ou un bogue dans le service. En outre, l’exception entraîne l’échec du service, qui est alors déplacé vers un autre nœud. Cette opération peut s’avérer coûteuse et peut retarder les requêtes entrantes pendant le déplacement du service. Les enregistreurs de service doivent déterminer la cause de l’exception et, si possible, la résoudre.

StatefulRunAsyncSlowCancellation est émis à chaque fois qu’une requête d’annulation de la tâche RunAsync prend plus de quatre secondes. Lorsqu’un service prend trop de temps pour terminer l’annulation, cela a un impact sur la capacité du service à être redémarré rapidement sur un autre nœud. Ce scénario peut avoir un impact sur la disponibilité globale du service.

Compteurs de performance

Le runtime Reliable Services définit les catégories de compteurs de performances suivantes :

Category Description
Réplicateur transactionnel Service Fabric Compteurs spécifiques au réplicateur transactionnel Azure Service Fabric
Service Fabric TStore Compteurs spécifiques à Azure Service Fabric TStore

Le réplicateur transactionnel Service Fabric est utilisé par le Gestionnaire d’état fiable pour répliquer les transactions au sein d’un ensemble donné de réplicas.

Service Fabric TStore est un composant utilisé dans les Collections fiables pour stocker et récupérer des paires clé-valeur.

L'application Analyseur de performances Windows , disponible par défaut dans le système d'exploitation Windows, peut être utilisée pour collecter et afficher les données de compteur de performances. Diagnostics Azure est une autre option pour collecter les données de compteur de performances et les télécharger dans les tables Azure.

Noms d'instance de compteur de performances

Un cluster avec un grand nombre de services fiables ou de partitions de services fiables disposera d'un grand nombre d’instances de compteur de performances du réplicateur transactionnel. Cela est également le cas pour les compteurs de performances TStore, mais est aussi multiplié par le nombre de Files d’attente fiables et Dictionnaires fiables utilisés. Les noms d’instance de compteur de performances peuvent aider à identifier la partition, le réplica de service et, dans le cas de TStore, le fournisseur d’état auxquels l’instance de compteur de performances est associée.

Catégorie de réplicateur transactionnel Service Fabric

Pour la catégorie Service Fabric Transactional Replicator, les noms d'instance de compteur ont le format suivant :

ServiceFabricPartitionId:ServiceFabricReplicaId

ServiceFabricPartitionId est la représentation sous forme de chaîne de l'ID de partition Service Fabric associée à l'instance de compteur de performances. L'ID de partition est un GUID et sa représentation sous forme de chaîne est générée via Guid.ToString avec le spécificateur de format « D ».

ServiceFabricReplicaId est l’ID associé à un réplica donné d’un service fiable. L’ID de réplica est inclus dans le nom de l’instance de compteur de performances pour garantir son unicité et éviter tout conflit avec d’autres instances de compteur de performances générées par la même partition. Vous trouverez ici d’autres détails sur les réplicas et leur rôle dans les services fiables.

Le nom d’instance de compteur suivant est typique d’un compteur de la catégorie Service Fabric Transactional Replicator :

00d0126d-3e36-4d68-98da-cc4f7195d85e:131652217797162571

Dans l’exemple précédent, 00d0126d-3e36-4d68-98da-cc4f7195d85e est la représentation sous forme de chaîne de l’ID de partition de Service Fabric et 131652217797162571 est l’ID du réplica.

Catégorie Service Fabric TStore

Pour la catégorie Service Fabric TStore, les noms d'instance de compteur ont le format suivant :

ServiceFabricPartitionId:ServiceFabricReplicaId:StateProviderId_PerformanceCounterInstanceDifferentiator_StateProviderName

ServiceFabricPartitionId est la représentation sous forme de chaîne de l'ID de partition Service Fabric associée à l'instance de compteur de performances. L'ID de partition est un GUID et sa représentation sous forme de chaîne est générée via Guid.ToString avec le spécificateur de format « D ».

ServiceFabricReplicaId est l’ID associé à un réplica donné d’un service fiable. L’ID de réplica est inclus dans le nom de l’instance de compteur de performances pour garantir son unicité et éviter tout conflit avec d’autres instances de compteur de performances générées par la même partition. Vous trouverez ici d’autres détails sur les réplicas et leur rôle dans les services fiables.

StateProviderId est l’ID associé à un fournisseur d’état au sein d’un service fiable. L’ID du fournisseur d’état est inclus dans le nom de l’instance de compteur de performances pour différencier un TStore d’un autre.

PerformanceCounterInstanceDifferentiator est un ID de différenciation associé à une instance de compteur de performances au sein d’un fournisseur d’état. Cet élément différenciateur est inclus dans le nom de l’instance de compteur de performances pour garantir son unicité et éviter tout conflit avec d’autres instances de compteur de performances générées par le même fournisseur d’état.

StateProviderName est le nom associé à un fournisseur d’état au sein d’un service fiable. Le nom du fournisseur d’état est inclus dans le nom de l’instance de compteur de performance pour permettre aux utilisateurs d’identifier facilement l’état qu’il fournit.

Le nom d’instance de compteur suivant est typique d’un compteur de la catégorie Service Fabric TStore :

00d0126d-3e36-4d68-98da-cc4f7195d85e:131652217797162571:142652217797162571_1337_urn:MyReliableDictionary/dataStore

Dans l’exemple précédent, 00d0126d-3e36-4d68-98da-cc4f7195d85e est la représentation sous forme de chaîne de l’ID de partition Service Fabric, 131652217797162571 est l’ID de réplica, 142652217797162571 est l’ID de fournisseur d’état et 1337 est l’élément différenciateur d’instance de compteur de performances. urn:MyReliableDictionary/dataStore est le nom du fournisseur d’état qui stocke les données pour la collection nommée urn:MyReliableDictionary.

Compteurs de performance du réplicateur transactionnel

Le runtime Reliable Services émet les événements suivants dans la catégorie Service Fabric Transactional Replicator

Nom du compteur Description
Opérations BeginTransaction/s Nombre de nouvelles transactions d’écriture créées par seconde.
Opérations de transaction/s Nombre d’opérations d’ajout/de mise à jour/de suppression effectuée sur des collections fiables par seconde.
Octets du journal vidé/s Nombre d'octets vidés sur le disque chaque seconde par le réplicateur transactionnel
Opérations limitées/s Nombre d'opérations rejetées chaque seconde par le réplicateur transactionnel en raison de la limitation.
Avg. Transaction en ms/validation Latence de validation moyenne par transaction en millisecondes
Avg. Latence de vidage (ms) Durée moyenne des opérations de vidage disque initiées par le réplicateur transactionnel en millisecondes

Compteurs de performances TStore

Le runtime Reliable Services émet les événements suivants dans la catégorie Service Fabric TStore

Nom du compteur Description
Nombre d’éléments Nombre d’éléments dans le magasin.
Taille du disque Taille totale de disque, en octets, des fichiers de point de contrôle du magasin.
Octets écrits/s dans le fichier de point de contrôle Nombre d’octets écrits par seconde pour le fichier de point de contrôle le plus récent.
Octets disque transférés/s sur la copie Nombre d’octets disque lus (sur le réplica principal) ou écrits (sur un réplica secondaire) par seconde lors d’une copie de magasin.

Étapes suivantes

Fournisseurs EventSource dans PerfView