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

イベント トレーシング for Windows (ETW) は、イベントのトラブルシューティング (Active Directory Domain Services (AD DS) に役立ちます。 ETW を使用して、ドメイン コントローラーを含む、Windows クライアントと LDAP サーバー間のライトウェイト ディレクトリ アクセス プロトコル (LDAP) 通信AD DSトレースできます。

ETW を有効にし、トレースを開始する方法

ETW電源を入れる

  1. レジストリ エディターを開き、次のレジストリ サブキーを作成します:

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

    このサブキーの ProcessName は、トレースするプロセスの拡張子を含む完全な名前です (例、"Svchost.exe" など)。

  2. (オプション)このサブキーの下に、PID という名前の新しいエントリ を作成します。 このエントリを使用するには、プロセス ID を DWORD 値として割り当てる必要があります。

    プロセス ID を指定すると、ETW は、このプロセス ID を持つアプリケーションのインスタンスのみをトレースします。

トレース セッションを開始するには

  • コマンド プロンプト ウィンドウを開き、次のコマンドを実行します:

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

    このコマンドのプレースホルダーは、次の値を表します。

    • <は、トレース セッションの>ラベル付けに使用される任意の識別子です。

    注意

    このセッション名は、後でトレース セッションを停止するときに参照する必要があります。

トレース セッションを終了し、イベント トレースをオフにする方法

トレースを停止します

  • コマンド プロンプトで次のコマンドを実行します。

    tracelog.exe -stop <SessionName>
    

    このコマンドは、 <セッションネーム> は -start tracelog.exe コマンドで使われたのと同じ です。

ETW電源を切る

  • レジストリ エディターで、ProcessName サブキーをHKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\ldap\Tracing\を削除します。

トレース フラグの値

フラグを使用するには、 tracelog.exe -start コマンドの引数で<TraceFlags >プレースホルダーの代わりにフラグ値を使用します。

注意

適切なフラグ値の合計を使用して、複数のフラグを指定できます。 たとえば、DEBUG_SEARCH (0x00000001) フラグと DEBUG_CACHE (0x00000010) フラグを指定するには、適切な <TraceFlags>値が0x00000011 になります。

フラグ名 フラグ値 フラグ の 説明
DEBUG_SEARCH 0x00000001 検索要求と、それらの要求に渡されるパラメーターをログに記録します。 応答はここには記録されません。 検索要求だけがログに記録されます。 ( DEBUG_SPEWSEARCHを 使用して、検索要求への応答をログに記録します。)
DEBUG_WRITE 0x00000002 検索要求と、それらの要求に渡されるパラメーターをログに記録します。 書き込み要求には、追加、削除、変更、および拡張操作が含まれます。
DEBUG_REFCNT 0x00000004 接続と要求のデータと操作のカウントをログに記録します。
DEBUG_HEAP 0x00000008 すべてのメモリ割り当てとメモリ 解放をログに記録します。
DEBUG_CACHE 0x00000010 キャッシュ アクティビティをログに記録します。 このアクティビティには、追加、削除、ヒット、ミスなどがあります。
DEBUG_SSL 0x00000020 SSL 情報とエラーをログに記録します。
DEBUG_SPEWSEARCH 0x00000040 すべてのサーバー応答を検索要求に記録します。 これらの応答には、要求された属性と、受信したすべてのデータが含まれます。
DEBUG_SERVERDOWN 0x00000080 サーバーダウンエラーと接続エラーをログに記録します。
DEBUG_CONNECT 0x00000100 接続の確立に関連するデータをログに記録します。
接続 DEBUG_CONNECTION 関連する他のデータをログに記録するには、次のコマンドを使用します。
DEBUG_RECONNECT 0x00000200 自動再接続アクティビティをログに記録します。 このアクティビティには、再接続の試行、エラー、および関連するエラーが含まれます。
DEBUG_RECEIVEDATA 0x00000400 サーバーからのメッセージの受信に関連するアクティビティをログに記録します。 このアクティビティには、"サーバーからの応答を待機しています" などのイベントと、サーバーから受信した応答が含まれます。
DEBUG_BYTES_SENT 0x00000800 LDAP クライアントによってサーバーに送信されたデータを全てログに記録します。 この関数は基本的にパケット ログですが、暗号化されていないデータは常にログに記録されます。 (パケットが SSL を使用して送信される場合、この関数は暗号化されていないパケットをログに記録します)。このログは詳細な場合があります。 このフラグは、単独で使用するか、または独自のフラグと組み合わせて使用 DEBUG_BYTES_RECEIVEDするのがベストです。
DEBUG_EOM 0x00001000 メッセージ リストの末尾への到達に関連するイベントをログに記録します。 これらのイベントには、"メッセージ リストがクリアされました" などの情報が含まれます。
DEBUG_BER 0x00002000 基本的なエンコード規則 (BER) に関連する操作とエラーをログに記録します。 これらの操作とエラーには、エンコード、バッファー サイズの問題など含まれます。
DEBUG_OUTMEMORY 0x00004000 メモリを割り当てるエラーをログに記録します。 また、必要なメモリの計算に失敗した場合 (例、必要なバッファー サイズを計算するときに発生するオーバーフロー) をログに記録します。
DEBUG_CONTROLS 0x00008000 コントロールに関連するデータをログに記録します。 このデータには、挿入されるコントロール、コントロールに影響する問題、接続に対する必須のコントロールが含まれます。
DEBUG_BYTES_RECEIVED 0x00010000 LDAP クライアントによって受信されたデータをログに記録します。 この関数は基本的にパケット ログですが、暗号化されていないデータは常にログに記録されます。 (パケットが SSL を使用して送信される場合、このオプションにより暗号化されていないパケットがログに記録されます)。この種類のログは詳細な場合があります。 このフラグは、単独で使用するか、または独自のフラグと組み合わせて使用 DEBUG_BYTES_SENTするのがベストです。
DEBUG_CLDAP 0x00020000 UDP とコネクションレス LDAP に固有のイベントをログに記録します。
DEBUG_FILTER 0x00040000 検索フィルターを作成するときに発生したイベントとエラーをログに記録します。
注意 このオプションは、フィルターの構築中にのみクライアント イベントをログに記録します。 フィルターに関するサーバーからの応答はログに記録されません。
DEBUG_BIND 0x00080000 イベントとエラーのバインドをログに記録します。 このデータには、ネゴシエーション情報、バインドの成功、バインドの失敗などがあります。
DEBUG_NETWORK_ERRORS 0x00100000 一般的なネットワーク エラー。 このデータには、送受信エラーが含まれます。
注意 接続が失われた場合、またはサーバーに到達できない場合は、 DEBUG_SERVERDOWN優先タグ です。
DEBUG_VERBOSE 0x00200000 一般的なメッセージをログに記録します。 大量の出力を生成する傾向があるメッセージには、このオプションを使用します。 例、"メッセージの終了に達しました"、"サーバーがまだ応答していません" などのメッセージをログに記録します。 このオプションは、汎用メッセージにも役立ちます。
DEBUG_PARSE 0x00400000 一般的なメッセージ イベントとエラーに加えて、パケットの解析とエンコードのイベントとエラーをログに記録します。
DEBUG_REFERRALS 0x00800000 紹介と紹介に関するデータをログに記録します。
DEBUG_REQUEST 0x01000000 要求の追跡をログに記録します。
DEBUG_CONNECTION 0x02000000 一般的な接続データとエラーをログに記録します。
DEBUG_INIT_TERM 0x04000000 モジュールの初期化とクリーンアップ (DLL Main など) をログに記録します。
DEBUG_API_ERRORS 0x08000000 API の誤った使用のログ記録をサポートします。 例、同じ接続でバインド操作が 2 回呼び出された場合、このオプションはデータをログに記録します。
DEBUG_ERRORS 0x10000000 一般的なエラーをログに記録します。 これらのエラーの大部分は、モジュール初期化エラー、SSL エラー、オーバーフロー エラーまたはアンダーフロー エラーとして分類できます。
DEBUG_PERFORMANCE 0x20000000 LDAP 要求に対するサーバー応答を受信した後、プロセス グローバル LDAP アクティビティ統計に関するデータをログに記録します。

ユーザー アカウントのパスワードApp1.exeするアプリケーションを検討してください。 予期しないApp1.exeが発生するとします。 ETW を使用してこの問題を診断するには、次の手順に従います:

  1. レジストリ エディターで、次のレジストリ キーを探します:

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

  2. トレース セッションを開始するには、コマンド プロンプト ウィンドウを開き、次のコマンドを実行します:

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

    このコマンドが 開始されるとDEBUG_BIND ETW がトレース メッセージを .\ldap.etl に書き込みます。

  3. App1.exeを開始し、予期しないエラーを再現します。

  4. トレース セッションを停止するには、コマンド プロンプトで次のコマンドを実行します:

     tracelog.exe -stop ldaptrace
    
  5. 他のユーザーがアプリケーションをトレースできない場合は、レジストリ HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\ldap\TracingApp1.exe\削除します。

  6. トレース ログの情報を確認するには、コマンド プロンプトで次のコマンドを実行します:

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

    注意

    このコマンドでは、 tracerpt.exe トレース コンシューマー ツール です。