ETW を使用した LDAP 接続のトラブルシューティングUsing ETW to troubleshoot LDAP connections

Windows イベントトレーシング (ETW)は、Active Directory Domain Services (AD DS) のための重要なトラブルシューティングツールにすることができます。Event Tracing for Windows (ETW) can be a valuable troubleshooting tool for Active Directory Domain Services (AD DS). ETW を使用して、Windows クライアントと LDAP サーバー (AD DS ドメインコントローラーを含む) との間のldap(ライトウェイトディレクトリアクセスプロトコル) 通信をトレースできます。You can use ETW to trace the Lightweight Directory Access Protocol (LDAP) communications between Windows clients and LDAP servers, including AD DS domain controllers.

ETW をオンにしてトレースを開始する方法How to turn on ETW and start a trace

ETW をオンにするにはTo turn on ETW

  1. レジストリエディターを開き、次のレジストリサブキーを作成します。Open Registry Editor, and create the following registry subkey:

    HKEY _ LOCAL _ MACHINE \ System \ CurrentControlSet \ Services \ ldap \ Tracing \ * ProcessName**HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\ldap\Tracing\ProcessName*

    このサブキーでは、 ProcessNameは、トレースするプロセスの完全な名前です (たとえば、"Svchost.exe")。In this subkey, ProcessName is the full name of the process that you want to trace, including its extension (for example, "Svchost.exe").

  2. (省略可能)このサブキーの下に、 PIDという名前の新しいエントリを作成します。(Optional) Under this subkey, create a new entry that is named PID. このエントリを使用するには、プロセス ID を DWORD 値として割り当てます。To use this entry, assign a process ID as a DWORD value.

    プロセス ID を指定した場合、ETW は、このプロセス ID を持つアプリケーションのインスタンスのみをトレースします。If you specify a process ID, ETW traces only the instance of the application that has this process ID.

トレースセッションを開始するにはTo start a tracing session

  • コマンドプロンプトウィンドウを開き、次のコマンドを実行します。Open a Command Prompt window, and run the following command:

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

    このコマンドのプレースホルダーは、次の値を表します。The placeholders in this command represent the following values.

    • <SessionName>トレースセッションにラベルを付けるために使用される任意の識別子を示します。<SessionName> is an arbitrary identifier that is used to label the tracing session.

    注意

    このセッション名は、後でトレースセッションを停止するときに参照する必要があります。You will have to refer to this session name later when you stop the tracing session.

    • <FileName>イベントが書き込まれるログファイルを指定します。<FileName> specifies the log file to which events will be written.
    • <TraceFlags>トレースフラグテーブルに記載されている1つ以上の値である必要があります。<TraceFlags> should be one or more of the values that are listed in the trace flags table.

トレースセッションを終了し、イベントのトレースをオフにする方法How to end a tracing session and turn off Event Tracing

トレースを停止するにはTo stop tracing

  • コマンド プロンプトで次のコマンドを実行します。At the command prompt, run the following command:

    tracelog.exe -stop <SessionName>
    

    このコマンドで <SessionName> は、はtracelog.exe 開始コマンドで使用したのと同じ名前です。In this command, <SessionName> is the same name that you used in the tracelog.exe -start command.

ETW を無効にするにはTo turn off ETW

  • レジストリエディターで、 HKEY _ LOCAL _ MACHINE \ System \ CurrentControlSet \ Services \ ldap \ Tracing \ * ProcessName* サブキーを削除します。In Registry Editor, delete the *HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\ldap\Tracing\ProcessName* subkey.

トレースフラグの値Values for trace flags

フラグを使用するには、 tracelog.exe-startコマンドの引数の <traceflags> プレースホルダーのフラグ値を置き換えます。To use a flag, substitute the flag value for the <TraceFlags> placeholder in the arguments of the tracelog.exe -start command.

注意

適切なフラグ値の合計を使用して、複数のフラグを指定できます。You can specify multiple flags by using the sum of the appropriate flag values. たとえば、デバッグ _ 検索(0X00000001) とデバッグ _ キャッシュ(0x00000010) フラグを指定する場合、適切な <TraceFlags> 値は0x00000011です。For example, to specify the DEBUG_SEARCH (0x00000001) and DEBUG_CACHE (0x00000010) flags, the appropriate <TraceFlags> value is 0x00000011.

フラグ名Flag name フラグ値Flag value フラグの説明Flag description
DEBUG_SEARCHDEBUG_SEARCH 0x000000010x00000001 検索要求と、それらの要求に渡されるパラメーターをログに記録します。Logs search requests and the parameters that are passed to those requests. 応答はここには記録されません。Responses are not logged here. 検索要求だけがログに記録されます。Only the search requests are logged. (検索要求に対する応答をログに記録するには、 DEBUG_SPEWSEARCHを使用します。)(Use DEBUG_SPEWSEARCH to log the responses to search requests.)
DEBUG_WRITEDEBUG_WRITE 0x000000020x00000002 書き込み要求と、それらの要求に渡されるパラメーターをログに記録します。Logs write requests and the parameters that are passed to those requests. 書き込み要求には、追加、削除、変更、および拡張操作が含まれます。Write requests include the add, delete, modify, and extended operations.
DEBUG_REFCNTDEBUG_REFCNT 0x000000040x00000004 接続と要求の参照カウントデータと操作をログに記録します。Logs reference counting data and operations for connections and requests.
DEBUG_HEAPDEBUG_HEAP 0x000000080x00000008 すべてのメモリ割り当てとメモリ解放をログに記録します。Logs all memory allocations and memory releases.
DEBUG_CACHEDEBUG_CACHE 0x000000100x00000010 キャッシュの利用状況をログに記録します。Logs cache activity. このアクティビティには、追加、削除、ヒット、ミスなどが含まれます。This activity includes adds, removes, hits, misses, and so on.
DEBUG_SSLDEBUG_SSL 0x000000200x00000020 SSL 情報とエラーをログに記録します。Logs SSL information and errors.
DEBUG_SPEWSEARCHDEBUG_SPEWSEARCH 0x000000400x00000040 検索要求に対するすべてのサーバー応答をログに記録します。Logs all server responses to search requests. これらの応答には、要求された属性、および受信したすべてのデータが含まれます。These responses include the attributes that were requested, plus all data that was received.
DEBUG_SERVERDOWNDEBUG_SERVERDOWN 0x000000800x00000080 サーバーダウンと接続エラーをログに記録します。Logs server-down and connection errors.
DEBUG_CONNECTDEBUG_CONNECT 0x000001000x00000100 接続の確立に関連するデータをログに記録します。Logs data that is related to establishing a connection.
DEBUG_CONNECTIONを使用して、接続に関連する他のデータをログに記録します。Use DEBUG_CONNECTION to log other data that is related to connections.
DEBUG_RECONNECTDEBUG_RECONNECT 0x000002000x00000200 自動再接続アクティビティをログに記録します。Logs automatic reconnect activity. このアクティビティには、再接続の試行、エラー、関連するエラーが含まれます。This activity includes reconnect attempts, failures, and related errors.
DEBUG_RECEIVEDATADEBUG_RECEIVEDATA 0x000004000x00000400 サーバーからのメッセージの受信に関連するアクティビティをログに記録します。Logs activity that is related to receiving messages from the server. このアクティビティには、"サーバーからの応答を待機しています"、サーバーから受信した応答などのイベントが含まれます。This activity includes events such as "waiting on the response from the server" and the response that is received from the server.
DEBUG_BYTES_SENTDEBUG_BYTES_SENT 0x000008000x00000800 LDAP クライアントによってサーバーに送信されたすべてのデータをログに記録します。Logs all data sent by the LDAP client to the server. この関数は基本的にパケットログ記録ですが、常に暗号化されていないデータをログに記録します。This function is essentially packet logging, but it always logs unencrypted data. (パケットが SSL 経由で送信される場合、この関数は暗号化されていないパケットをログに記録します)。このログ記録は詳細にすることができます。(If a packet is sent over SSL, this function logs the unencrypted packet.) This logging can be verbose. このフラグは、単独で使用するか、 DEBUG_BYTES_RECEIVEDと組み合わせて使用することをお勧めします。This flag is probably best used on its own or combined with DEBUG_BYTES_RECEIVED.
DEBUG_EOMDEBUG_EOM 0x000010000x00001000 メッセージリストの末尾への到達に関連するイベントをログに記録します。Logs events that are related to reaching the end of a message list. これらのイベントには、"メッセージ一覧がクリアされました" などの情報が含まれます。These events include information such as "message list cleared" and so on.
DEBUG_BERDEBUG_BER 0x000020000x00002000 基本エンコード規則 (BER) に関連する操作とエラーをログに記録します。Logs operations and errors that are related to Basic Encoding Rules (BER). これらの操作とエラーには、エンコードの問題、バッファーサイズの問題などがあります。These operations and errors include problems in encoding, buffer size problems, and so on.
DEBUG_OUTMEMORYDEBUG_OUTMEMORY 0x000040000x00004000 メモリの割り当てに失敗したことをログに記録します。Logs failures to allocate memory. また、は、必要なメモリの計算に失敗した場合にもログに記録します (たとえば、必要なバッファーサイズを計算するときにオーバーフローが発生した場合など)。Also logs any failure to compute the required memory (for example, an overflow that occurs when computing the required buffer size).
DEBUG_CONTROLSDEBUG_CONTROLS 0x000080000x00008000 コントロールに関連するデータをログに記録します。Logs data that relates to controls. このデータには、挿入されるコントロール、コントロールに影響する問題、接続に必要なコントロールなどが含まれます。This data includes controls that are inserted, problems that affect controls, mandatory controls on a connection, and so on.
DEBUG_BYTES_RECEIVEDDEBUG_BYTES_RECEIVED 0x000100000x00010000 LDAP クライアントによって受信されたすべてのデータをログに記録します。Logs all data that is received by the LDAP client. この動作は基本的にパケットログ記録ですが、常に暗号化されていないデータをログに記録します。This behavior is essentially packet logging, but it always logs unencrypted data. (パケットが SSL 経由で送信される場合、このオプションを指定すると、暗号化されていないパケットがログに記録されます)。この種類のログ記録は詳細にすることができます。(If a packet is sent over SSL, this option logs the unencrypted packet.) This type of logging can be verbose. このフラグは、単独で使用するか、 DEBUG_BYTES_SENTと組み合わせて使用することをお勧めします。This flag is probably best used on its own or combined with DEBUG_BYTES_SENT.
DEBUG_CLDAPDEBUG_CLDAP 0x000200000x00020000 UDP およびコネクションレス LDAP に固有のイベントをログに記録します。Logs events that are specific to UDP and connectionless LDAP.
DEBUG_FILTERDEBUG_FILTER 0x000400000x00040000 検索フィルターを構築するときに発生するイベントとエラーをログに記録します。Logs events and errors that are encountered when you construct a search filter.
メモこのオプションは、フィルターの構築中にのみクライアントイベントをログに記録します。Note This option logs client events only during filter construction. フィルターに関するサーバーからの応答はログに記録されません。It does not log any responses from the server about a filter.
DEBUG_BINDDEBUG_BIND 0x000800000x00080000 ログにイベントとエラーをバインドします。Logs bind events and errors. このデータには、ネゴシエーション情報、バインドの成功、バインドの失敗などが含まれます。This data includes negotiation information, bind success, bind failure, and so on.
DEBUG_NETWORK_ERRORSDEBUG_NETWORK_ERRORS 0x001000000x00100000 一般的なネットワークエラーをログに記録します。Logs general network errors. このデータには、送信および受信エラーが含まれます。This data includes send and receive errors.
メモ接続が失われた場合、またはサーバーに到達できない場合は、 DEBUG_SERVERDOWNが優先タグになります。Note If a connection is lost or the server cannot be reached, DEBUG_SERVERDOWN is the preferred tag.
DEBUG_VERBOSEDEBUG_VERBOSE 0x002000000x00200000 一般的なメッセージをログに記録します。Logs general messages. このオプションは、大量の出力を生成する傾向があるすべてのメッセージに対して使用します。Use this option for any messages that tend to generate a large amount of output. たとえば、"メッセージの終わりに達しました"、"サーバーはまだ応答していません" などのメッセージがログに記録されます。For example, it logs messages such as "end of message reached," "server has not responded yet," and so on. このオプションは、汎用メッセージにも役立ちます。This option is also useful for generic messages.
DEBUG_PARSEDEBUG_PARSE 0x004000000x00400000 一般的なメッセージイベントとエラーに加え、パケット解析およびエンコードイベントとエラーをログに記録します。Logs general message events and errors plus packet parsing and encoding events and errors.
DEBUG_REFERRALSDEBUG_REFERRALS 0x008000000x00800000 参照と追跡参照に関するデータをログに記録します。Logs data about referrals and chasing referrals.
DEBUG_REQUESTDEBUG_REQUEST 0x010000000x01000000 要求の追跡をログに記録します。Logs tracking of requests.
DEBUG_CONNECTIONDEBUG_CONNECTION 0x020000000x02000000 一般的な接続データとエラーをログに記録します。Logs general connection data and errors.
DEBUG_INIT_TERMDEBUG_INIT_TERM 0x040000000x04000000 モジュールの初期化とクリーンアップ (DLL Main など) をログに記録します。Logs module initialization and cleanup (DLL Main, and so on).
DEBUG_API_ERRORSDEBUG_API_ERRORS 0x080000000x08000000 API の不適切な使用のログ記録をサポートします。Supports logging incorrect use of the API. たとえば、同じ接続でバインド操作が2回呼び出された場合、このオプションはデータをログに記録します。For example, this option logs data if the bind operation is called two times on the same connection.
DEBUG_ERRORSDEBUG_ERRORS 0x100000000x10000000 一般的なエラーをログに記録します。Logs general errors. これらのエラーのほとんどは、モジュール初期化エラー、SSL エラー、オーバーフローまたはアンダーフローエラーとして分類できます。Most of these errors can be categorized as module initialization errors, SSL errors, or overflow or underflow errors.
DEBUG_PERFORMANCEDEBUG_PERFORMANCE 0x200000000x20000000 LDAP 要求に対するサーバー応答を受信した後の、プロセスグローバル LDAP アクティビティ統計に関するデータをログに記録します。Logs data about process-global LDAP activity statistics after receiving a server response for an LDAP request.

Example

ユーザーアカウントのパスワードを設定するアプリケーション (App1.exe) について考えてみましょう。Consider an application, App1.exe, that sets passwords for user accounts. App1.exe が予期しないエラーを生成したとします。Suppose that App1.exe produces an unexpected error. ETW を使用してこの問題を診断するには、次の手順を実行します。To use ETW to help diagnose this problem, you follow these steps:

  1. レジストリエディターで、次のレジストリエントリを作成します。In Registry Editor, create the following registry entry:

    HKEY _ LOCAL _ MACHINE \ System \ CurrentControlSet \ Services \ ldap \ トレース \App1.exeHKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\ldap\Tracing\App1.exe

  2. トレースセッションを開始するには、コマンドプロンプトウィンドウを開き、次のコマンドを実行します。To start a tracing session, open a Command Prompt window, and run the following command:

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

    このコマンドが開始されると、デバッグ _ バインドによって、ETW がトレースメッセージをに書き込むことが確認されます。 \.etl。After this command starts, DEBUG_BIND makes sure that ETW writes tracing messages to .\ldap.etl.

  3. App1.exe を開始し、予期しないエラーを再現します。Start App1.exe, and reproduce the unexpected error.

  4. トレースセッションを停止するには、コマンドプロンプトで次のコマンドを実行します。To stop the tracing session, run the following command at the command prompt:

     tracelog.exe -stop ldaptrace
    
  5. 他のユーザーがアプリケーションをトレースできないようにするには、 HKEY _ LOCAL _ MACHINE \ System \ CurrentControlSet \ Services \ ldap \ tracing \ App1.exeレジストリエントリを削除します。To prevent other users from tracing the application, delete the HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\ldap\Tracing\App1.exe registry entry.

  6. トレースログの情報を確認するには、コマンドプロンプトで次のコマンドを実行します。To review the information in the trace log, run the following command at the command prompt:

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

    注意

    このコマンドでは、 tracerpt.exeトレースコンシューマーツールです。In this command, tracerpt.exe is a trace consumer tool.