ETW を使用した LDAP 接続のトラブルシューティング
イベント トレーシング for Windows (ETW) は、イベントのトラブルシューティング (Active Directory Domain Services (AD DS) に役立ちます。 ETW を使用して、ドメイン コントローラーを含む、Windows クライアントと LDAP サーバー間のライトウェイト ディレクトリ アクセス プロトコル (LDAP) 通信AD DSトレースできます。
ETW を有効にし、トレースを開始する方法
ETW電源を入れる
レジストリ エディターを開き、次のレジストリ サブキーを作成します:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\ldap\Tracing\ProcessName
このサブキーの ProcessName は、トレースするプロセスの拡張子を含む完全な名前です (例、"Svchost.exe" など)。
(オプション)このサブキーの下に、PID という名前の新しいエントリ を作成します。 このエントリを使用するには、プロセス ID を DWORD 値として割り当てる必要があります。
プロセス ID を指定すると、ETW は、このプロセス ID を持つアプリケーションのインスタンスのみをトレースします。
トレース セッションを開始するには
コマンド プロンプト ウィンドウを開き、次のコマンドを実行します:
tracelog.exe -start <SessionName> -guid \#099614a5-5dd7-4788-8bc9-e29f43db28fc -f <FileName> -flag <TraceFlags>
このコマンドのプレースホルダーは、次の値を表します。
- <は、トレース セッションの>ラベル付けに使用される任意の識別子です。
注意
このセッション名は、後でトレース セッションを停止するときに参照する必要があります。
- <ファイル名 は、イベントの>書き込みログ ファイルを指定します。
- <トレース フラグ は、>トレース フラグ テーブルに一覧表示されている 1 つ以上の値 。
トレース セッションを終了し、イベント トレースをオフにする方法
トレースを停止します
コマンド プロンプトで次のコマンドを実行します。
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 を使用してこの問題を診断するには、次の手順に従います:
レジストリ エディターで、次のレジストリ キーを探します:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\ldap\Tracing\App1.exe
トレース セッションを開始するには、コマンド プロンプト ウィンドウを開き、次のコマンドを実行します:
tracelog.exe -start ldaptrace -guid \#099614a5-5dd7-4788-8bc9-e29f43db28fc -f .\ldap.etl -flag 0x80000
このコマンドが 開始されるとDEBUG_BIND ETW がトレース メッセージを .\ldap.etl に書き込みます。
App1.exeを開始し、予期しないエラーを再現します。
トレース セッションを停止するには、コマンド プロンプトで次のコマンドを実行します:
tracelog.exe -stop ldaptrace
他のユーザーがアプリケーションをトレースできない場合は、レジストリ HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\ldap\TracingApp1.exe\削除します。
トレース ログの情報を確認するには、コマンド プロンプトで次のコマンドを実行します:
tracerpt.exe .\ldap.etl -o -report
注意
このコマンドでは、 tracerpt.exe トレース コンシューマー ツール です。