Freigeben über


Verwenden von ETW zur Problembehandlung bei LDAP-Verbindungen

Die Ereignisablaufverfolgung für Windows (ETW) kann ein wertvolles Problembehandlungstool für Active Directory Domain Services (AD DS) sein. Sie können ETW verwenden, um die LDAP-Kommunikation (Lightweight Directory Access Protocol) zwischen Windows-Clients und LDAP-Servern, einschließlich AD DS-Domänencontrollern, nachzuverfolgen.

Aktivieren von ETW und Starten einer Ablaufverfolgung

So aktivieren Sie ETW

  1. Öffnen Sie den Registrierungs-Editor, und erstellen Sie den folgenden Registrierungsunterschlüssel:

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

    In diesem Unterschlüssel ist ProcessName der vollständige Name des Prozesses, den Sie nachverfolgen möchten, einschließlich der Erweiterung (z. B. "Svchost.exe").

  2. (Optional) Erstellen Sie unter diesem Unterschlüssel einen neuen Eintrag mit dem Namen PID. Um diesen Eintrag zu verwenden, weisen Sie eine Prozess-ID als DWORD-Wert zu.

    Wenn Sie eine Prozess-ID angeben, verfolgt ETW nur die Instanz der Anwendung mit dieser Prozess-ID.

Starten einer Ablaufverfolgungssitzung

  • Öffnen Sie ein Eingabeaufforderungsfenster, und führen Sie den folgenden Befehl aus:

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

    Die Platzhalter in diesem Befehl stellen die folgenden Werte dar.

    • < SessionName> ist ein beliebiger Bezeichner, der zur Kennzeichnung der Tracing-Sitzung verwendet wird.

    Hinweis

    Sie müssen später beim Beenden der Ablaufverfolgungssitzung auf diesen Sitzungsnamen verweisen.

Beenden einer Ablaufverfolgungssitzung und Deaktivieren der Ereignisablaufverfolgung

Beenden der Ablaufverfolgung

  • Führen Sie an der Eingabeaufforderung den folgenden Befehl aus:

    tracelog.exe -stop <SessionName>
    

    In diesem Befehl < ist SessionName> derselbe Name, den Sie im Befehltracelog.exe -start verwendet haben.

So deaktivieren Sie ETW

  • Löschen Sie im Registrierungs-Editor den unterschlüsselHKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\ldap\Tracing\ProcessName .

Werte für Ablaufverfolgungsflags

Um ein Flag zu verwenden, ersetzen Sie den Flagwert für den Platzhalter <TraceFlags> in den Argumenten des Befehls stracelog.exe -start.

Hinweis

Sie können mehrere Flags angeben, indem Sie die Summe der entsprechenden Flagwerte verwenden. Wenn Sie z. B. die DEBUG_SEARCH (0x00000001) und DEBUG_CACHE (0x00000010)-Flags angeben möchten, wird der entsprechende <TraceFlags-Wert>0x00000011.

Flagname Flagwert Flaggenbeschreibung
DEBUG_SEARCH 0x00000001 Protokolliert Suchanforderungen und die Parameter, die an diese Anforderungen übergeben werden. Antworten werden hier nicht protokolliert. Nur die Suchanforderungen werden protokolliert. (Verwenden Sie DEBUG_SPEWSEARCH , um die Antworten auf Suchanforderungen zu protokollieren.)
DEBUG_WRITE 0x00000002 Protokolliert Schreibanforderungen und die Parameter, die an diese Anforderungen übergeben werden. Zu den Schreibanforderungen gehören Hinzufüge-, Lösch-, Bearbeitungs- und erweiterte Vorgänge.
DEBUG_REFCNT 0x00000004 Die Protokolle verweisen auf die Zählung von Daten und die Vorgänge für Verbindungen und Anforderungen.
DEBUG_HEAP 0x00000008 Protokolliert alle Speicherzuweisungen und Speicherfreigaben.
DEBUG_CACHE 0x00000010 Protokolliert Cacheaktivitäten. Diese Aktivität beinhaltet Vorgänge zum Hinzufügen und Entfernen, Treffer, Fehlversuche usw.
DEBUG_SSL 0x00000020 Protokolliert SSL-Informationen und -Fehler.
DEBUG_SPEWSEARCH 0x00000040 Protokolliert alle Serverantworten für Suchanforderungen. Zu diesen Antworten gehören die angeforderten Attribute sowie alle empfangenen Daten.
DEBUG_SERVERDOWN 0x00000080 Protokolliert Server-Down- und Verbindungsfehler.
DEBUG_CONNECT 0x00000100 Protokolliert Daten, die sich auf das Herstellen einer Verbindung beziehen.
Verwenden Sie DEBUG_CONNECTION , um andere Daten zu protokollieren, die mit Verbindungen zusammenhängen.
DEBUG_RECONNECT 0x00000200 Protokolliert die automatische Wiederverbindungsaktivität. Diese Aktivität beinhaltet Verbindungswiederherstellungsversuche, Fehlversuche und verwandte Fehler.
DEBUG_RECEIVEDATA 0x00000400 Protokolliert Aktivitäten im Zusammenhang mit dem Empfangen von Nachrichten vom Server. Diese Aktivität umfasst Ereignisse wie "Warten auf die Antwort vom Server" und die Antwort, die vom Server empfangen wird.
DEBUG_BYTES_SENT 0x00000800 Protokolliert alle Vom LDAP-Client an den Server gesendeten Daten. Diese Funktion ist im Wesentlichen die Paketprotokollierung, protokolliert aber immer unverschlüsselte Daten. (Wenn ein Paket über SSL gesendet wird, protokolliert diese Funktion das unverschlüsselte Paket.) Diese Protokollierung kann ausführlich sein. Diese Kennzeichnung wird wahrscheinlich am besten alleine verwendet oder mit DEBUG_BYTES_RECEIVED kombiniert.
DEBUG_EOM 0x00001000 Protokolliert Ereignisse, die mit dem Erreichen des Endes einer Nachrichtenliste zusammenhängen. Zu diesen Ereignissen gehören Informationen wie "Nachrichtenliste gelöscht" usw.
DEBUG_BER 0x00002000 Protokolliert Vorgänge und Fehler, die sich auf grundlegende Codierungsregeln (BASIC Encoding Rules, BER) beziehen. Zu diesen Vorgängen und Fehlern gehören Probleme bei der Codierung, Puffergrößenprobleme usw.
DEBUG_OUTMEMORY 0x00004000 Protokolliert Fehler beim Zuordnen des Arbeitsspeichers. Protokolliert außerdem alle Fehler beim Berechnen des erforderlichen Arbeitsspeichers (z. B. einen Überlauf, der beim Berechnen der erforderlichen Puffergröße auftritt).
DEBUG_CONTROLS 0x00008000 Protokolliert Daten, die sich auf Steuerelemente beziehen. Diese Daten umfassen eingefügte Steuerelemente, Probleme, die Sich auf Steuerelemente auswirken, obligatorische Steuerelemente für eine Verbindung usw.
DEBUG_BYTES_RECEIVED 0x00010000 Protokolliert alle Daten, die vom LDAP-Client empfangen werden. Dieses Verhalten ist im Wesentlichen die Paketprotokollierung, protokolliert aber immer unverschlüsselte Daten. (Wenn ein Paket über SSL gesendet wird, protokolliert diese Option das unverschlüsselte Paket.) Dieser Protokollierungstyp kann ausführlich sein. Diese Kennzeichnung wird wahrscheinlich am besten alleine verwendet oder mit DEBUG_BYTES_SENT kombiniert.
DEBUG_CLDAP 0x00020000 Protokolliert Ereignisse, die für UDP und verbindungsloses LDAP spezifisch sind.
DEBUG_FILTER 0x00040000 Protokolliert Ereignisse und Fehler, die beim Erstellen eines Suchfilters auftreten.
Anmerkung Diese Option protokolliert Client-Ereignisse nur während der Filterbildung. Es protokolliert keine Antworten vom Server im Zusammenhang mit einem Filter.
DEBUG_BIND 0x00080000 Protokolle binden Ereignisse und Fehler. Diese Daten umfassen Verhandlungsinformationen, erfolgreiche Bindungen, Bindungsfehlschläge usw.
DEBUG_NETWORK_ERRORS 0x00100000 Protokolliert allgemeine Netzwerkfehler. Diese Daten umfassen Sende- und Empfangsfehler.
Anmerkung Wenn eine Verbindung verloren geht oder der Server nicht erreicht werden kann, ist DEBUG_SERVERDOWN das bevorzugte Tag.
DEBUG_VERBOSE 0x00200000 Protokolliert allgemeine Nachrichten. Verwenden Sie diese Option für alle Nachrichten, die dazu neigen, eine große Menge an Ausgabe zu generieren. Beispielsweise protokolliert sie Nachrichten wie "Ende der Nachricht erreicht", "Server hat noch nicht geantwortet" usw. Diese Option ist auch für generische Nachrichten nützlich.
DEBUG_PARSE 0x00400000 Protokolliert allgemeine Nachrichtenereignisse und Fehler sowie Paketanalyse- und Codierungsereignisse und -fehler.
DEBUG_REFERRALS 0x00800000 Protokolliert Daten zu Empfehlungen und der Verfolgung von Empfehlungen.
DEBUG_REQUEST 0x01000000 Protokolliert die Verfolgung von Anforderungen.
DEBUG_CONNECTION 0x02000000 Protokolliert allgemeine Verbindungsdaten und Fehler.
DEBUG_INIT_TERM 0x04000000 Protokolliert Modulinitialisierung und Bereinigung (DLL Main usw.).
DEBUG_API_ERRORS 0x08000000 Unterstützt die Protokollierung der falschen Verwendung der API. Mit dieser Option werden beispielsweise Daten protokolliert, wenn der Bindungsvorgang bei derselben Verbindung zweimal aufgerufen wird.
DEBUG_FEHLER 0x10000000 Protokolliert allgemeine Fehler. Die meisten dieser Fehler können als Modulinitialisierungsfehler, SSL-Fehler oder Überlauf- oder Unterlauffehler kategorisiert werden.
DEBUG_PERFORMANCE 0x20000000 Protokolliert Daten zu prozess-globalen LDAP-Aktivitätsstatistiken, nachdem eine Serverantwort für eine LDAP-Anforderung empfangen wurde.

Beispiel

Erwägen Sie eine Anwendung, App1.exe, die Kennwörter für Benutzerkonten festlegt. Angenommen, App1.exe verursacht einen unerwarteten Fehler. Wenn Sie ETW verwenden möchten, um dieses Problem zu diagnostizieren, führen Sie die folgenden Schritte aus:

  1. Erstellen Sie im Registrierungs-Editor den folgenden Registrierungseintrag:

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

  2. Um eine Ablaufverfolgungssitzung zu starten, öffnen Sie ein Eingabeaufforderungsfenster, und führen Sie den folgenden Befehl aus:

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

    Nach dem Starten dieses Befehls stellt DEBUG_BIND sicher, dass ETW Ablaufverfolgungsmeldungen in „.\ldap.etl“ schreibt.

  3. Starten Sie App1.exe, und reproduzieren Sie den unerwarteten Fehler.

  4. Führen Sie den folgenden Befehl an der Eingabeaufforderung aus, um die Ablaufverfolgungssitzung zu beenden:

     tracelog.exe -stop ldaptrace
    
  5. Um zu verhindern, dass andere Benutzer die Anwendung nachverfolgen, löschen Sie die HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\ldap\Tracing\App1.exe Registrierungseintrag.

  6. Um die Informationen im Ablaufverfolgungsprotokoll zu überprüfen, führen Sie an der Eingabeaufforderung den folgenden Befehl aus:

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

    Hinweis

    In diesem Befehl ist tracerpt.exe ein Ablaufverfolgungsverbraucher-Tool.