トレース
トレースでは、Windows イベント トレーシング (ETW) を使用します。 Windows Server 2008 R2 で利用可能なトレース ツールを活用するには、Microsoft Windows SDK をインストールします。
次の 3 つのトレース レベルがサポートされています。
- Verbose (詳細。使用可能なすべてのトレース)。
- Info (情報。情報トレース)。
- Error (エラー。エラー トレース)。
次のイベントがトレースされます。
- あらゆるエラー (Level=Error、Level=Info、または Level=Verbose)。
- API の開始/終了 (Level=Info または Level=Verbose)。
- 任意の IO の開始と完了 (Level=Info または Level=Verbose)
- 交換された SOAP メッセージ (Level=Verbose、Windows 2003 SP1 以降で使用可能)
WWSAPI は、Windows Vista 以降でマニフェスト ベースのイベントを使用します。 そのため、トレース エクスペリエンスには、オペレーティング システムのバージョンによって多少違いがあります。 ETW トレースの生成は、サポートされているすべてのプラットフォームでインストールされている ETW ツールを使用して実行できます。 ただし、Windows XP SP2 および Windows 2003 SP1 で ETW トレースを適切な形式で表示するには、カスタム ツールが必要です。 オペレーティング システムのバージョンに応じて、WWSAPI ETW イベント トレースの収集方法と表示方法はいくつかあります。
- コマンド ラインまたは実行メニューから eventvwr.msc を実行します。
- 右側の [操作] ウィンドウの表示リンクをクリックし、[分析およびデバッグ ログの表示] オプションを有効にします。
- 左側のウィンドウで、アプリケーションとサービス ログ\Microsoft\Windows\WebServices プロバイダーを参照します。
- [トレース プロバイダー] を右クリックし、[ログを有効にする] を選択します。
- シナリオを実行します。
- イベント ビューアー ページを更新すると、WWSAPI トレース エントリの表示が開始されます。
wstrace.bat バッチ ファイルには、次を行うための便利な方法があります。
- トレース ログを作成する
- トレース ログを削除する
- トレースを有効または無効にする
- トレース レベル (Info/Error/Verbose) を更新する
- トレース ログを CSV ファイルに変換する
バッチ ファイルは、ログを CSV ファイルに変換するコマンド (カスタム ツール (wstracedump.exe) を必要とするもの) を除き、すべてのコマンドに logman.exe を使用します。
次のコマンドは、Info、Error、または Verbose レベルを使用するログを作成します。 このコマンドには、昇格された特権が必要です。
wstrace.bat create [info | error | verbose]
次のコマンドはログを削除します。 このコマンドには、昇格された特権が必要です。
wstrace.bat delete
次のコマンドは、トレースを有効にします。 最初にログを作成する必要があります。
wstrace.bat on
トレース レベル (Info、Error、または Verbose) は、次のように変更できます。
wstrace.bat update [info | error | verbose]
トレース出力をダンプするには、次のコマンドを使用します。
wstrace.bat dump > temp.csv
Ctrl + C キーが押されるかトレースが無効になるまで、イベントは CSV ファイルにダンプされます。
wstrace.bat によって作成される CSV ファイルは、単純なコンマ区切り変数テキスト ファイルです。 これらのファイルは、Excel、メモ帳などで開く場合があります。
ファイルの列は次のとおりです。
- TimeStamp - イベントが記録された日時のタイムスタンプ
- ProcessID - イベントを記録するプロセスの ULONG ID
- ThreadID - イベントを記録するスレッドの ULONG ID
- Event - イベントの種類の列挙値 ("api enter" | "api pending" | "api ExitSyncSuccess" | "api ExitSyncFailure" | "api ExitAsyncSuccess" | "api ExitAsyncFailure" | "io started" | "io completed" | "io failed" | "error" | "received message start" | "received message" | "received message stop" | "sending message start" | "sending message" | "sending message stop")
- 操作 - 呼び出されている操作の名前。 通常、これは呼び出される API にマップされます。
- エラー - 省略可能な HRESULT エラー番号
- 情報 - イベントに関する省略可能な情報
WWSAPI の ETW トレースの有効化
logman start wstrace -bs 64 -ft 1 -rt -p Microsoft-Windows-WebServices [flags [level]] [-o <EtlLogFileName>] -ets
ETW トレース セッションを作成して開始するためです。 Logman.exe は、サポートされているすべてのプラットフォームで利用可能なインストールされている ETW ツールです。 XPSP2 と W2K3 でプロバイダー名として Microsoft_Windows_WebServices を使用する必要があることに注意してください。 logman クエリ プロバイダーを実行すると、登録されているプロバイダーの一覧を表示できます。 登録されていない場合を除き、Microsoft-Windows-WebServices (またはMicrosoft_Windows_WebServices) プロバイダーは一覧表示されます。 プロバイダーは通常、セットアップ中に登録されます。 ただし、wevtutil.exe im <ManifestFileName> (Windows Vista 以降の場合) または mofcomp.exe <MofFileName> (XPSP2 と W2K3 の場合) を実行して手動で登録することもできます。
フラグを使用すると、トレースを種類別にフィルター処理できます。 次のトレースの種類の OR 値を指定できます。 指定しない場合は、すべてのトレースの種類が有効になります。
- 0x1 - API の開始/終了トレース。
- 0x2 - エラー トレース。
- 0x4 - IO トレース。
- 0x8 - SOAP メッセージ トレース。
- 0x10 - バイナリ メッセージ トレース。
レベルを使用すると、トレースをレベル別にフィルター処理できます。 次のいずれの値を指定する必要があります。 指定しない場合は、すべてのトレース レベルの種類が有効になります。
- 0x1 - 致命的なトレース。
- 0x2 - エラー トレース。
- 0x3 - 警告トレース。
- 0x4 - 情報トレース。
- 0x5 - 詳細トレース。
EtlLogFileName は、作成される ETW イベント ログ ファイルへのパスです (.etl 拡張子を使用)。 指定しない場合、ETW は後でクエリを実行できるランダムな名前を選択します。 このファイルは、ユーザーのプロファイル ディレクトリに配置しないでください。 ETW イベント ログ ファイル (.etl ファイル) はバイナリ形式です。 ETW アプリケーションで使用できますが、人間が判読できる形式ではありません。 次の手順では、そのコンテンツを表示する方法について説明します。
シナリオの実行
ETW イベント ログ ファイルの収集。
logman stop wstrace -ets
ETW トレース セッションを停止するためです。 これにより、ETW はイベントのログを停止します。 ETW イベント ログ ファイル (EtlLogFileName パラメータに指定) を使用する準備ができました。 ローカルで表示することも (手順は後述)、調査のために製品グループに送信することもできます。
ETW ツールを使用したエンド ツー エンドの例:
logman start wstrace -bs 64 -ft 1 -rt -p Microsoft-Windows-WebServices -o mytrace.etl -ets
echo .. run your scenario..
logman stop wstrace -ets
tracerpt mytrace.etl -o mytrace.xml
wstrace.htm
echo .. use mytrace.xml and wstrace.xsl in the opened page ..
Wstracedump.exe は、WWSAPI ETW トレース ファイル内のイベントを処理し、人間が判読できる出力を生成する、カスタム開発された ETW コンシューマー ツールです。 サポートされているすべてのプラットフォームから出力を生成できます。 詳細については、その使用法 (wstracedump.exe -?) を参照してください。
Tracerpt.exe は、ETW イベント ログ ファイルの内容を表示するためのツールであり、サポートされているすべてのプラットフォームで使用できます。 それを使用して、ETW イベント ログ ファイルから CSV、EVTX、または XML のダンプ ファイルを生成できます。 ただし、生成された出力ファイルには、Windows Vista 以降でのみ人間が判読できるトレースがあります。 これらの手順では、XML ダンプ ファイルを生成し、それを xsl ファイルと一緒に使用してトレースを適切な形式で表示する方法について説明します (xsl ファイルは非常に単純なので、異なる形式が必要な場合は変更できます)。
[ファイル名を指定して実行]
tracerpt <EtlLogFileName> -o <OutputXMLFileName>
バイナリ ETL ファイルから XML ダンプを作成するためです (tracerpt.exe は、既定では XML 形式で出力ファイルを作成します。tracerpt を実行する -? 他の使用可能な形式を表示するには)。
この時点で、XML ファイル内のトレース情報を確認できます。 さらに、wstrace.htm ファイルを開き、xml ダンプ ファイルと wstrace.xsl ファイルを使用して、より適切な形式でトレースを表示することもできます。 この HTML ファイルを IE で使用できるようにするには、ファイルがローカル マシン上にある必要があることに注意してください。
トレースを有効にする場合、管理者は追加のディスク領域と評価能力が消費されることを考慮する必要があります。 トレース設定が合理的な範囲の制限をもって構成されている場合を除き、悪意のあるクライアントまたはアプリケーションがシステム リソースを使い果たす可能性があります。 メッセージ追跡機能を使用すると、資格情報や個人情報などの機密情報を含むメッセージがディスクに保存されたり、システム イベント ビューアーにアクセスできるすべてのユーザーが表示できたりする可能性があります。 この問題を軽減するために、Windows 2003 以降ではシステム ユーザーまたは管理者ユーザーがトレースを有効にすることができます。 どのユーザーでもトレースをオンにできる Windows XP では、メッセージ トレースは無効になっています。
トレースでは、次の列挙型が使用されます。