Uso di ETW per la risoluzione dei problemi relativi alle connessioni LDAP

Event Tracing for Windows (ETW) può essere un utile strumento di risoluzione dei problemi per Active Directory Domain Services (AD DS). È possibile usare ETW per tracciare le comunicazioni Lightweight Directory Access Protocol (LDAP) tra Windows client e server LDAP, inclusi i controller di dominio di Servizi di dominio Active Directory.

Come attivare ETW e avviare una traccia

Per attivare ETW

  1. Aprire l'editor del Registro di sistema e creare la sottochiave del Registro di sistema seguente:

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

    In questa sottochiave ProcessName è il nome completo del processo che si vuole tracciare, inclusa l'estensione (ad esempio, "Svchost.exe").

  2. (Facoltativo) In questa sottochiave creare una nuova voce denominata PID. Per usare questa voce, assegnare un ID processo come valore DWORD.

    Se si specifica un ID processo, ETW traccia solo l'istanza dell'applicazione con questo ID processo.

Per avviare una sessione di traccia

  • Aprire una finestra del prompt dei comandi ed eseguire il comando seguente:

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

    I segnaposto in questo comando rappresentano i valori seguenti.

    • <<> è un identificatore arbitrario utilizzato per etichettare la sessione di traccia.

    Nota

    Sarà necessario fare riferimento a questo nome di sessione in un secondo momento quando si arresta la sessione di traccia.

    • <<> specifica il file di log in cui verranno scritti gli eventi.
    • <<> deve essere uno o più dei valori elencati nella tabella >.

Come terminare una sessione di traccia e disattivare Traccia eventi

Per arrestare la traccia

  • Al prompt dei comandi, eseguire il comando seguente:

    tracelog.exe -stop <SessionName>
    

    In questo comando SessionName è lo stesso nome usato nel comando <<>>

Per disattivare ETW

  • Nell'editor del Registro di sistema eliminare HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\ldap\Tracing\sottochiave ProcessName.

Valori per i flag di traccia

Per usare un flag, sostituire il valore del flag con il segnaposto << negli argomenti del comando >>

Nota

È possibile specificare più flag usando la somma dei valori di flag appropriati. Ad esempio, per specificare i flag DEBUG_SEARCH (0x00000001) e DEBUG_CACHE (0x00000010), il valore TraceFlags appropriato è 0x00000011.

Nome del flag Valore del flag Descrizione del flag
DEBUG_SEARCH 0x00000001 Registra le richieste di ricerca e i parametri passati a tali richieste. Le risposte non vengono registrate qui. Vengono registrate solo le richieste di ricerca. Usare DEBUG_SPEWSEARCH per registrare le risposte alle richieste di ricerca.
DEBUG_WRITE 0x00000002 Registra le richieste di scrittura e i parametri passati a tali richieste. Le richieste di scrittura includono le operazioni di aggiunta, eliminazione, modifica ed estensione.
DEBUG_REFCNT 0x00000004 Registra i dati e le operazioni di conteggio dei riferimenti per connessioni e richieste.
DEBUG_HEAP 0x00000008 Registra tutte le allocazioni di memoria e le versioni di memoria.
DEBUG_CACHE 0x00000010 Registra l'attività della cache. Questa attività include aggiunte, rimuove, riscontri, mancati riscontri e così via.
DEBUG_SSL 0x00000020 Registra informazioni ed errori SSL.
DEBUG_SPEWSEARCH 0x00000040 Registra tutte le risposte del server alle richieste di ricerca. Queste risposte includono gli attributi richiesti, oltre a tutti i dati ricevuti.
DEBUG_SERVERDOWN 0x00000080 Registra gli errori di connessione e di insodggi del server.
DEBUG_CONNECT 0x00000100 Registra i dati correlati alla creazione di una connessione.
Usare DEBUG_CONNECTION per registrare altri dati correlati alle connessioni.
DEBUG_RECONNECT 0x00000200 Registra l'attività di riconnessione automatica. Questa attività include tentativi di riconnessione, errori ed errori correlati.
DEBUG_RECEIVEDATA 0x00000400 Registra l'attività correlata alla ricezione di messaggi dal server. Questa attività include eventi come "attesa della risposta dal server" e la risposta ricevuta dal server.
DEBUG_BYTES_SENT 0x00000800 Registra tutti i dati inviati dal client LDAP al server. Questa funzione è essenzialmente la registrazione dei pacchetti, ma registra sempre dati non crittografati. Se un pacchetto viene inviato tramite SSL, questa funzione registra il pacchetto non crittografato. Questa registrazione può essere dettagliata. Questo flag è probabilmente meglio usato da solo o combinato con DEBUG_BYTES_RECEIVED.
DEBUG_EOM 0x00001000 Registra gli eventi correlati al raggiungimento della fine di un elenco di messaggi. Questi eventi includono informazioni come "elenco messaggi cancellato" e così via.
DEBUG_BER 0x00002000 Registra operazioni ed errori correlati alle regole di codifica di base (BER). Queste operazioni ed errori includono problemi di codifica, problemi di dimensione del buffer e così via.
DEBUG_OUTMEMORY 0x00004000 Registra gli errori di allocazione della memoria. Registra anche eventuali errori di calcolo della memoria necessaria, ad esempio un overflow che si verifica durante il calcolo delle dimensioni del buffer necessarie.
DEBUG_CONTROLS 0x00008000 Registra i dati correlati ai controlli. Questi dati includono i controlli inseriti, i problemi che interessano i controlli, i controlli obbligatori in una connessione e così via.
DEBUG_BYTES_RECEIVED 0x00010000 Registra tutti i dati ricevuti dal client LDAP. Questo comportamento è essenzialmente la registrazione dei pacchetti, ma registra sempre dati non crittografati. Se un pacchetto viene inviato tramite SSL, questa opzione registra il pacchetto non crittografato. Questo tipo di registrazione può essere dettagliato. Questo flag è probabilmente più adatto per se stesso o combinato con DEBUG_BYTES_SENT.
DEBUG_CLDAP 0x00020000 Registra gli eventi specifici di UDP e LDAP senza connessione.
DEBUG_FILTER 0x00040000 Registra gli eventi e gli errori rilevati quando si costruisce un filtro di ricerca.
Nota Questa opzione registra gli eventi client solo durante la costruzione del filtro. Non registra alcuna risposta dal server su un filtro.
DEBUG_BIND 0x00080000 I log associano eventi ed errori. Questi dati includono le informazioni di negoziazione, l'esito positivo dell'associazione, l'esito negativo dell'associazione e così via.
DEBUG_NETWORK_ERRORS 0x00100000 Registra gli errori di rete generali. Questi dati includono errori di invio e ricezione.
Nota Se una connessione viene persa o non è possibile raggiungere il server, DEBUG_SERVERDOWN è il tag preferito.
DEBUG_VERBOSE 0x00200000 Registra i messaggi generali. Usare questa opzione per tutti i messaggi che tendono a generare una grande quantità di output. Ad esempio, registra messaggi come "fine del messaggio raggiunta", "il server non ha ancora risposto" e così via. Questa opzione è utile anche per i messaggi generici.
DEBUG_PARSE 0x00400000 Registra gli eventi e gli errori generali dei messaggi, nonché gli eventi e gli errori di analisi e codifica dei pacchetti.
DEBUG_REFERRALS 0x00800000 Registra i dati sulle segnalazioni e sulle segnalazioni di ricerca.
DEBUG_REQUEST 0x01000000 Registra il rilevamento delle richieste.
DEBUG_CONNECTION 0x02000000 Registra i dati di connessione generali e gli errori.
DEBUG_INIT_TERM 0x04000000 Registra l'inizializzazione e la pulizia dei moduli (DLL Main e così via).
DEBUG_API_ERRORS 0x08000000 Supporta la registrazione dell'uso non corretto dell'API. Ad esempio, questa opzione registra i dati se l'operazione di associazione viene chiamata due volte nella stessa connessione.
DEBUG_ERRORS 0x10000000 Registra gli errori generali. La maggior parte di questi errori può essere classificata come errori di inizializzazione del modulo, errori SSL o errori di overflow o underflow.
DEBUG_PERFORMANCE 0x20000000 Registra i dati sulle statistiche delle attività LDAP globali del processo dopo aver ricevuto una risposta del server per una richiesta LDAP.

Esempio

Si consideri un'applicazione, App1.exe, che imposta le password per gli account utente. Si supponga che App1.exe un errore imprevisto. Per usare ETW per diagnosticare questo problema, seguire questa procedura:

  1. Nell'editor del Registro di sistema creare la voce del Registro di sistema seguente:

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

  2. Per avviare una sessione di traccia, aprire una finestra del prompt dei comandi ed eseguire il comando seguente:

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

    Dopo l'avvio di questo comando, DEBUG_BIND che ETW scrive i messaggi di traccia in .\ldap.etl.

  3. Avviare App1.exe e riprodurre l'errore imprevisto.

  4. Per arrestare la sessione di traccia, eseguire il comando seguente al prompt dei comandi:

     tracelog.exe -stop ldaptrace
    
  5. Per impedire ad altri utenti di tracciare l'applicazione, eliminare la voce delRegistro di HKEY_LOCAL_MACHINE systemCurrentControlSetServicesldapTracingApp1.exe registro.

  6. Per esaminare le informazioni nel log di traccia, eseguire il comando seguente al prompt dei comandi:

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

    Nota

    In questo comando, tracerpt.exe è uno strumento consumer di traccia.