Suivi d’événements pour la cible Windows

S’applique à :SQL Server

Avant d'utiliser le suivi d'événements pour Windows (ETW) comme cible, il est recommandé d'avoir une connaissance pratique du Suivi d'événements pour Windows. Le suivi ETW est utilisé conjointement avec les Événements étendus ou en tant que consommateur d'événements des Événements étendus. Les liens externes suivants fournissent un point de départ pour obtenir des informations générales sur le suivi ETW :

La cible du suivi ETW est une cible singleton, bien qu'elle puisse être ajoutée à plusieurs sessions. Si un événement est déclenché sur plusieurs sessions, l'événement sera propagé uniquement à la cible ETW une fois par occurrence de l'événement. Le moteur des Événements étendus est limité à une seule instance par processus.

Important

Pour que la cible ETW fonctionne, le compte de démarrage du service SQL Server doit être membre du groupe Utilisateurs du journal des performances.

La configuration des événements présents dans une session ETW est contrôlée par le processus qui héberge le moteur des Événements étendus. Le moteur contrôle quels événements déclencher et quelles conditions doivent être respectées pour qu'un événement se déclenche.

Après la liaison à une session Événements étendus, qui attache la cible ETW pour la première fois pendant la durée de vie d’un processus, la cible ETW ouvre une session ETW unique sur le fournisseur SQL Server. Si une session ETW existe déjà, la cible ETW obtient une référence à la session existante. Cette session ETW est partagée sur toutes les instances SQL Server sur un ordinateur donné. Cette session ETW reçoit tous les événements à partir des sessions qui possèdent la cible ETW.

Comme ETW a besoin de fournisseurs pour pouvoir consommer des événements et les transmettre en aval au suivi ETW, tous les packages des Événements étendus sont activés sur la session. Lorsqu'un événement est déclenché, la cible ETW envoie l'événement à la session sur laquelle le fournisseur pour l'événement est activé.

La cible ETW prend en charge la publication synchrone d'événements sur le thread qui déclenche l'événement. Toutefois, la cible ETW ne prend pas en charge la publication d’événements asynchrone.

La cible ETW ne prend pas en charge le contrôle à partir de contrôleurs ETW externes tels que Logman.exe. Pour produire des traces ETW, une session d'événements doit être créée avec la cible ETW. Pour plus d’informations, consultez CREATE EVENT SESSION (Transact-SQL).

Remarque

L'activation de la cible ETW crée une session ETW nommée XE_DEFAULT_ETW_SESSION. Si une session portant le nom XE_DEFAULT_ETW_SESSION existe déjà, elle est utilisée sans modifier les propriétés de la session existante. Le XE_DEFAULT_ETW_SESSION est partagé entre toutes les instances de SQL Server. Après avoir démarré XE_DEFAULT_ETW_SESSION, vous devez l'arrêter à l'aide d'un contrôleur ETW, tel que l'outil Logman. Par exemple, vous pouvez exécuter la commande suivante à l’invite de commandes : logman stop XE_DEFAULT_ETW_SESSION -ets.

Le tableau suivant décrit les options disponibles pour configurer la cible ETW.

Option Valeurs autorisées Description
default_xe_session_name Toute chaîne incluant jusqu'à 256 caractères. Cette valeur est facultative. Nom de la session Événements étendus. Par défaut, il s'agit de la session XE_DEFAULT_ETW_SESSION.
default_etw_session_logfile_path Toute chaîne incluant jusqu'à 256 caractères. Cette valeur est facultative. Chemin d'accès du fichier journal pour la session Événements étendus. (%TEMP%\XEEtw.etl par défaut).
default_etw_session_logfile_size_mb Entier quelconque non signé. Cette valeur est facultative. Taille du fichier journal, en mégaoctets (Mo), de la session Événements étendus. La valeur par défaut est 20 Mo.
default_etw_session_buffer_size_kb Entier quelconque non signé. Cette valeur est facultative. Taille des tampons en mémoire, en kilo-octets (Ko), pour la session Événements étendus. La valeur par défaut est 128 Ko.
retries Entier quelconque non signé. Nombre de nouvelles tentatives de publication de l'événement dans le sous-système ETW avant la suppression de l'événement. La valeur par défaut est 0.

La configuration de ces paramètres est facultative. La cible ETW utilise les valeurs par défaut de ces paramètres.

La cible ETW est chargée des opérations suivantes :

  • Création de la session ETW par défaut.

  • Enregistrement de tous les packages des Événements étendus auprès d'ETW. Cela garantit que les événements ne sont pas supprimés par ETW.

  • Gestion de l'envoi du flux d'événements à ETW. La cible ETW crée un événement ETW avec les données des Événements étendus et l'envoie à la session ETW appropriée. Si l’événement est supérieur à la taille de la mémoire tampon ou si les données ne peuvent pas tenir dans un événement ETW, ETW fractionne l’événement en fragments.

  • Conservation des packages des Événements étendus activés à tout instant.

Les emplacements de fichier par défaut suivants sont utilisés par ETW :

  • Le fichier de sortie ETW se trouve dans %TEMP%\XEEtw.etl.

    Important

    Le chemin d’accès au fichier ne peut pas être modifié après le démarrage de la première session.

  • Les fichiers MOF (Managed Object Format) se trouvent dans <votre chemin> d’installation\Microsoft SQL Server\Shared. Pour plus d'informations, consultez Format d'objet managé sur MSDN.

Ajouter la cible à une session

Pour ajouter la cible ETW à une session Événements étendus lorsque vous créez ou modifiez une session d'événements, vous devez inclure l'instruction suivante :

ADD TARGET package0.etw_classic_sync_target

Pour plus d’informations et pour obtenir un exemple complet qui montre comment utiliser la cible ETW (et notamment comment afficher les données), consultez Surveiller l’activité système à l’aide d’événements étendus.