Share via


Utilisation d’ETW pour résoudre les problèmes des connexions LDAP

Le suivi d’événements pour Windows (ETW) peut être un outil de résolution des problèmes précieux pour Active Directory Domain Services (AD DS). Vous pouvez utiliser ETW pour suivre les communications LDAP (Lightweight Directory Access Protocol) entre les clients Windows et les serveurs LDAP, y compris les contrôleurs de domaine AD DS.

Comment activer ETW et démarrer une trace

Pour activer ETW

  1. Ouvrez l’Éditeur du Registre et créez la sous-clé de Registre suivante :

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\ldap\Tracing\ProcessName

    Dans cette sous-clé, ProcessName est le nom complet du processus que vous souhaitez suivre, y compris son extension (par exemple, « Svchost.exe »).

  2. (Facultatif) Sous cette sous-clé, créez une nouvelle entrée nommée PID. Pour utiliser cette entrée, attribuez un ID de processus en tant que valeur DWORD.

    Si vous spécifiez un ID de processus, ETW trace uniquement l’instance de l’application qui a cet ID de processus.

Pour démarrer une session de suivi

  • Ouvrez une fenêtre d'invite de commandes et exécutez la commande suivante :

    tracelog.exe -start <SessionName> -guid \#099614a5-5dd7-4788-8bc9-e29f43db28fc -f <FileName> -flag <TraceFlags>
    

    Les espaces réservés dans cette commande représentent les valeurs suivantes.

    • <SessionName> est un identificateur arbitraire utilisé pour étiqueter la session de suivi.

    Notes

    Vous devrez vous référer à ce nom de session plus tard lorsque vous arrêterez la session de suivi.

    • <FileName> spécifie le fichier journal dans lequel les événements seront écrits.
    • <TraceFlags> doit être une ou plusieurs des valeurs répertoriées dans la table indicateurs de trace.

Comment mettre fin à une session de suivi et désactiver le suivi d’événements

Pour arrêter le suivi

  • À l'invite de commandes, exécutez la commande suivante :

    tracelog.exe -stop <SessionName>
    

    Dans cette commande, <SessionName> est le même nom que celui que vous avez utilisé dans la commande tracelog.exe -start.

Pour désactiver ETW

  • Dans l’Éditeur du Registre, supprimez la sous-clé ProcessNameHKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\ldap\Tracing\.

Valeurs des indicateurs de suivi

Pour utiliser un indicateur, remplacez la valeur de l’indicateur par l’espace réservé <TraceFlags> dans les arguments de la commande tracelog.exe -start.

Notes

Vous pouvez spécifier plusieurs indicateurs à l’aide de la somme des valeurs d’indicateur appropriées. Par exemple, pour spécifier les indicateurs DEBUG_SEARCH (0x00000001) et DEBUG_CACHE (0x00000010), la valeur <TraceFlags> appropriée est 0x00000011.

Nom de l’indicateur Valeur d’indicateur Description de l’indicateur
DEBUG_SEARCH 0x00000001 Consigne les requêtes de recherche et les paramètres qui sont passés à ces requêtes. Les réponses ne sont pas consignées ici. Seules les requêtes de recherche sont consignées. (Utilisez DEBUG_SPEWSEARCH pour consigner les réponses aux requêtes de recherche.)
DEBUG_WRITE 0x00000002 Consigne les requêtes d’écriture et les paramètres transmis à ces requêtes. Les requêtes d’écriture incluent les opérations d’ajout, de suppression, de modification et d’extension.
DEBUG_REFCNT 0x00000004 Consigne les données et les opérations de comptage de référence pour les connexions et les requêtes.
DEBUG_HEAP 0x00000008 Consigne toutes les allocations de mémoire et les libérations de mémoire.
DEBUG_CACHE 0x00000010 Consigne l’activité du cache. Cette activité inclut des ajouts, des suppressions, des accès, des manques, et ainsi de suite.
DEBUG_SSL 0x00000020 Consigne les informations et les erreurs relatives à SSL.
DEBUG_SPEWSEARCH 0x00000040 Consigne toutes les réponses du serveur aux requêtes de recherche. Ces réponses incluent les attributs qui ont été demandés, ainsi que toutes les données reçues.
DEBUG_SERVERDOWN 0x00000080 Consigne les erreurs de connexion et d’arrêt du serveur.
DEBUG_CONNECT 0x00000100 Consigne les données liées à l’établissement d’une connexion.
Utilisez DEBUG_CONNECTION pour consigner d’autres données liées aux connexions.
DEBUG_RECONNECT 0x00000200 Consigne l’activité de reconnexion automatique. Cette activité inclut les tentatives de reconnexion, les échecs et les erreurs associées.
DEBUG_RECEIVEDATA 0x00000400 Consigne l’activité liée à la réception de messages du serveur. Cette activité inclut des événements tels que « en attente de la réponse du serveur » et la réponse reçue du serveur.
DEBUG_BYTES_SENT 0x00000800 Consigne toutes les données envoyées par le client LDAP au serveur. Cette fonction consiste essentiellement à enregistrer des paquets, mais elle consigne toujours des données non chiffrées. (Si un paquet est envoyé via SSL, cette fonction consigne le paquet non chiffré.) Cette journalisation peut être détaillée. Cet indicateur est probablement mieux utilisé seul ou combiné avec DEBUG_BYTES_RECEIVED.
DEBUG_EOM 0x00001000 Consigne les événements liés à l’atteinte de la fin d’une liste de messages. Ces événements incluent des informations telles que « liste de messages effacée », etc.
DEBUG_BER 0x00002000 Consigne les opérations et les erreurs liées aux règles d’encodage de base (BER). Ces opérations et erreurs incluent des problèmes d’encodage, des problèmes de taille de la mémoire tampon, etc.
DEBUG_OUTMEMORY 0x00004000 Consigne les échecs d’allocation de mémoire. Consigne également tout échec de calcul de la mémoire requise (par exemple, un dépassement de capacité qui se produit lors du calcul de la taille de la mémoire tampon requise).
DEBUG_CONTROLS 0x00008000 Consigne les données relatives aux contrôles. Ces données incluent les contrôles qui sont insérés, les problèmes qui affectent les contrôles, les contrôles obligatoires sur une connexion, etc.
DEBUG_BYTES_RECEIVED 0x00010000 Consigne toutes les données reçues par le client LDAP. Ce comportement consiste essentiellement à consigner des paquets, mais il enregistre toujours des données non chiffrées. (Si un paquet est envoyé via SSL, cette option consigne le paquet non chiffré.) Ce type de journalisation peut être détaillé. Cet indicateur est probablement mieux utilisé seul ou combiné avec DEBUG_BYTES_SENT.
DEBUG_CLDAP 0x00020000 Consigne les événements spécifiques à UDP et LDAP sans connexion.
DEBUG_FILTER 0x00040000 Consigne les événements et les erreurs rencontrés lors de la construction d’un filtre de recherche.
Note Cette option consigne les événements client uniquement pendant la construction du filtre. Elle ne consigne aucune réponse du serveur à propos d’un filtre.
DEBUG_BIND 0x00080000 Consigne les événements et les erreurs de liaison. Ces données incluent des informations de négociation, de réussite de liaison, d’échec de liaison, etc.
DEBUG_NETWORK_ERRORS 0x00100000 Consigne les erreurs réseau générales. Ces données incluent les erreurs d’envoi et de réception.
Note Si une connexion est perdue ou si le serveur n’est pas accessible, DEBUG_SERVERDOWN est la balise préférée.
DEBUG_VERBOSE 0x00200000 Consigne les messages généraux. Utilisez cette option pour tous les messages qui ont tendance à générer une grande quantité de sortie. Par exemple, cette option permet de consigner des messages tels que « fin du message atteinte », « le serveur n’a pas encore répondu », etc. Cette option est également utile pour les messages génériques.
DEBUG_PARSE 0x00400000 Consigne les événements et erreurs de message généraux, ainsi que les événements et erreurs d’analyse et d’encodage de paquets.
DEBUG_REFERRALS 0x00800000 Consigne les données relatives aux références et à la recherche de références.
DEBUG_REQUEST 0x01000000 Consigne le suivi des requêtes.
DEBUG_CONNECTION 0x02000000 Consigne les données générales de connexion et les erreurs.
DEBUG_INIT_TERM 0x04000000 Consigne l’initialisation et le nettoyage du module (DLL Main, etc.).
DEBUG_API_ERRORS 0x08000000 Prend en charge la journalisation de l’utilisation incorrecte de l’API. Par exemple, cette option consigne les données si l’opération de liaison est appelée deux fois sur la même connexion.
DEBUG_ERRORS 0x10000000 Consigne les erreurs générales. La plupart de ces erreurs peuvent être classées comme des erreurs d’initialisation de module, des erreurs SSL ou des erreurs de dépassement ou d’insuffisance de capacité.
DEBUG_PERFORMANCE 0x20000000 Consigne des données sur les statistiques d’activité LDAP globales du processus après réception d’une réponse du serveur à une requête LDAP.

Exemple

Envisagez une application, App1.exe, qui définit des mots de passe pour les comptes d’utilisateur. Supposons que App1.exe génère une erreur inattendue. Pour utiliser ETW pour vous aider à diagnostiquer ce problème, procédez comme suit :

  1. Dans l’Éditeur du Registre, créez l’entrée de Registre suivante :

    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\ldap\Tracing\App1.exe

  2. Pour démarrer une session de suivi, ouvrez une fenêtre d’invite de commandes et exécutez la commande suivante :

    tracelog.exe -start ldaptrace -guid \#099614a5-5dd7-4788-8bc9-e29f43db28fc -f .\ldap.etl -flag 0x80000
    

    Une fois cette commande démarrée, DEBUG_BIND vérifie que ETW écrit les messages de suivi dans .\ldap.etl.

  3. Démarrez App1.exe et reproduisez l’erreur inattendue.

  4. Pour arrêter la session de suivi, exécutez la commande suivante à l’invite de commandes :

     tracelog.exe -stop ldaptrace
    
  5. Pour empêcher d’autres utilisateurs de tracer l’application, supprimez l’entrée de Registre HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\ldap\Tracing\App1.exe.

  6. Pour passer en revue les informations contenues dans le journal de suivi, exécutez la commande suivante à l’invite de commandes :

     tracerpt.exe .\ldap.etl -o -report
    

    Notes

    Dans cette commande, tracerpt.exe est un outil consommateur de suivi.