IIS 8.5 でトレースを使用して失敗した要求のトラブルシューティング
適用対象: インターネット インフォメーション サービス 8.5
概要
要求ベースのトレースは、スタンドアロン IIS サーバーと Microsoft Azure Web サイト (WAWS) の両方で使用できます。 発生している問題を再現できる場合は、要求ベースのトレースを使用して、要求で何が発生しているのか、その理由を正確に判断する方法が提供されます。 一部の要求でのパフォーマンス低下、他の要求での認証関連のエラー、ASP または ASP.NET からのサーバー 500 エラーなどの問題は、問題が発生したときに問題のトレースをキャプチャしない限り、トラブルシューティングが困難な場合があります。 この記事では、IIS サーバーでの失敗した要求トレースについて説明します。 Microsoft Azure Web サイトでこれを行う方法については、「Visual Studio を使用したAzure App Serviceアプリのトラブルシューティング」を参照してください。
失敗した要求トレースは、要求のトレース イベントをバッファーに格納し、要求が失敗した場合にのみディスクにフラッシュするように設計されています。ここでは、 エラーの定義を指定します。 要求が特定の HTTP 状態コード (401 や 404 など) を返す理由を知りたい場合、または要求の処理に時間がかかっているか、応答していない場合は、失敗した要求トレースを使用できます。
この記事で説明するタスクは次のとおりです。
- 失敗した要求トレース モジュールの有効化。
- 失敗した要求トレース ログ ファイル セマンティクスの構成。
- 失敗した要求トレースを保持する URL (エラー定義やトレースする領域など) を定義する。
- エラー状態を生成し、結果のトレースを表示する。
前提条件
IIS のインストール
この記事で説明されているタスクを実行する前に、IIS 8.5 をインストールします。
http://localhost/
[インターネット インフォメーション サービス] スプラッシュ画面が表示されていることを参照して確認します。 IIS がインストールされていない場合は、インストール手順については、「Windows Server 2012 R2 への IIS 8.5 のインストール」を参照してください。 IIS をインストールするときは、次の機能もインストールしてください。
- ASP.NET 3.5 ( Web Server (IIS)/Web Server/アプリケーション開発機能/ASP.NET 3.5)
- ASP.NET 4.5 ( Web Server (IIS)/Web Server/アプリケーション開発機能/ASP.NET 4.5 の下)
- トレース ([Web Server (IIS)]\(Web Server (IIS)\)/Web Server の/正常性と診断 - トレース)
管理者としてサインインする
サインインに使用するアカウントが管理者アカウントであるか、管理者グループ内にあることを確認します。
注:
管理者グループに属している場合、既定では完全な管理者権限は付与されません。 アプリケーション アイコンを右クリックし、[管理者として実行] を選択して、管理者としてアプリケーションを 実行する必要があります。
バックアップを作成する
次のタスクを実行する前に、構成ファイルのバックアップを作成します。
Windows ロゴ キーと X キーを同時に選択し、[コマンド プロンプト (管理)] を選択し、[はい] を選択します。
コマンド プロンプトで、次のコマンドを実行します。
%windir%\system32\inetsrv\appcmd add backup cleanInstall
このコマンドは、バックアップ構成ファイルを含む cleanInstall フォルダーを %windir%\system32\inetsrv\backup に作成します。
サンプル コンテンツを作成する
%systemdrive%\inetpub\wwwroot に移動します。
コンテンツをセキュリティで保護された場所に移動するか (既存のコンテンツを復元する場合に備えて)、削除します。
空のファイルを作成し、 test.aspという名前を付けます。
コマンド プロンプトで、\inetpub\wwwroot 内のtest.asp ファイルに移動します。
test.asp ファイルに、次の内容を貼り付けます。
<h2>Failed Request Tracing Lab</h2><br> <br>Today's date is <% response.write(Date()) %>
ASP を無効にする
このタスクでは ASP を無効にする必要があります。 ASP は、例として、およびこの記事のタスクの目的でのみ無効になっています。
ASP を無効にするには、次の手順に従います。
IIS マネージャーを開き、サーバーを選択します。
ISAPI と CGI の制限をダブルクリックします。
[ ISAPI と CGI の制限 ] ウィンドウで、[ Active Server Pages]\(アクティブ なサーバー ページ\) を選択します。 [ 操作 ] ウィンドウで、[ 拒否 ] を選択して ASP を無効にします。 [Active Server Pages]\(アクティブ サーバー ページ\) は [許可されていません] と表示されます。
失敗した要求トレースを有効にする
失敗した要求トレースを有効にした後、ログ ファイルのパスを構成する必要があります。 このセクションでは、既定の Web サイトに対して失敗した要求トレースを有効にし、ログ ファイルを格納する場所を指定し、エラー ログを生成するエラーを構成します。
手順 1: サイトの失敗した要求トレースを有効にし、ログ ファイル ディレクトリを構成する
管理者権限でコマンド プロンプトを開き、 %systemdrive%\windows\system32\inetsrv に移動します。
を実行
inetmgr
して IIS マネージャーを開きます。[Connections] ウィンドウで、コンピューター名を展開し、[サイト] を展開して、[既定の Web サイト] を選択します。
[ 操作 ] ウィンドウの [ 構成] で、[ 失敗した要求トレース...] を選択します。
[ Web サイトの失敗した要求トレース設定の編集 ] ダイアログ ボックスで、次を構成します。
- [ 有効] チェック ボックスをオンにします。
- 他の設定の既定値をそのまま使用します。
[OK] を選択します。
既定の Web サイトで失敗した要求トレース ログが有効になりました。 %windir%\system32\inetsrv\config\applicationHost.config ファイルを確認して、構成が次のように表示されることを確認します。
<system.applicationHost> <!-- other system configuration --> <sites> <site name="Default Web Site" id="1"> <!-- other site configuration --> <traceFailedRequestsLogging enabled="true" /> </site> <!-- site & app defaults --> <!-- other sites configuration --> </sites> <!-- other system configuration --> </system.applicationHost>
手順 2: エラー定義を構成する
この手順では、トレースする領域など、URL のエラー定義を構成します。 まだ有効になっていない拡張機能に対する要求に対して IIS によって返される 404.2 状態コードのトラブルシューティングを行います。 これは、有効にする必要がある特定の拡張機能を決定するのに役立ちます。 詳細については、「 IIS の HTTP 状態コード」を参照してください。
管理者権限でコマンド プロンプトを開き、 %systemdrive%\windows\system32\inetsrv に移動します。
を実行
inetmgr
して IIS マネージャーを開きます。[Connections] ウィンドウで、コンピューター名を展開し、[サイト] を展開して、[既定の Web サイト] を選択します。
[失敗した要求トレース 規則] をダブルクリックします。
[ 操作 ] ウィンドウで、[ 追加] を選択します。
[失敗した要求トレース規則の追加] ウィザードの [トレースするコンテンツの指定] ページで、[すべてのコンテンツ (*)] を選択し、[次へ] を選択します。
[ トレース条件の定義 ] ページで、[ 状態コード ] チェック ボックスをオンにし、トレースする状態コードとして 「404.2 」と入力します。
[次へ] を選択します。
[ トレース プロバイダーの選択 ] ページの [ プロバイダー] で、[ WWW サーバー ] チェック ボックスをオンにし、他のすべてのチェック ボックスをオフにします。 [ 領域] で、[ セキュリティ ] チェック ボックスをオンにし、他のすべてのチェック ボックスをオフにします。
生成中の問題により、セキュリティ エラー トレース イベントがスローされます。 一般に、認証と承認 (ISAPI 制限リストの問題を含む) の問題は、トレースに WWW サーバー - セキュリティ領域の構成を使用して診断できます。 ただし、 FREB.xsl スタイル シートはエラーと警告を強調表示するのに役立ちますので、既定の構成を使用して、すべての領域とプロバイダーのすべてのイベントをログに記録できます。
[ 詳細] で [詳細] を選択 します。
注:
トレース ロール サービスをインストールすると、IIS は既定で WWW Server、ASP、および ISAPI 拡張機能トレース プロバイダーをインストールします。 2.0 以降 ASP.NET インストールすると、IIS によって ASPNET トレース プロバイダーが自動的に追加されます。 追加のプロバイダーは、アプリケーション要求ルーティング (ARR) インストーラー パッケージによってインストールされます。これにより、URL 書き換えモジュール、Web ファーム管理、および外部キャッシュもインストールされます。 要素内の 要素を使用
<add>
して、さらにトレース プロバイダーを<traceProviderDefinitions>
追加できます。[完了] を選択します。
既定の Web サイトには、次の定義が表示されます。
IIS マネージャーは、タグを使用して構成を
%systemdrive%\inetpub\wwwroot\web.config
ファイルに<location>
書き込みます。 構成では、次の値を再設定する必要があります。<configuration> <system.webServer> <tracing> <traceFailedRequests> <add path="*"> <traceAreas> <add provider="WWW Server" areas="Security" verbosity="Verbose" /> </traceAreas> <failureDefinitions statusCodes="404.2" /> </add> </traceFailedRequests> </tracing> </system.webServer> </configuration>
エラー要求ログ ファイルをテストして表示する
このセクションは、失敗した要求を生成し、結果のトレース ログを表示するのに役立ちます。 HTTP 応答コード 404.2 で失敗した要求のトレース ログ http://localhost/*.asp
をキャプチャするように IIS を既に構成しました。 次に、動作することを確認します。
手順 1: エラーとエラー要求ログ ファイルを生成する
新しいインターネット エクスプローラー ウィンドウを開きます。
を
http://localhost/test.asp
入力し、 Enter キーを押します。 "HTTP エラー 404.2 - 見つかりません" というエラー メッセージが表示されます。
手順 2: エラー要求ログ ファイルを表示する
失敗した要求を生成したら、Windows エクスプローラーを開き、%systemdrive%\inetpub\logs\FailedReqLogFiles\W3SVC1 に移動します。
注:
IIS は、失敗した要求ログ ファイルを書き込むと、失敗した要求ごとに 1 つのファイルを書き込みます。 freb.xsl スタイル シートも、ディレクトリごとに 1 つずつ書き込まれます。 これは、結果として得られるエラー要求ログ ファイル (このサンプル のfr000001.xml など) を表示するときに役立ちます。
404.2 エラーのログ ファイルを右クリックし、[Open With ->Internet エクスプローラー] を選択します。 失敗した要求トレース ファイルを初めて開く場合は、インターネット エクスプローラーのセキュリティ強化構成が既定で有効になっているため、信頼済みサイトの一覧に about:internet を追加する必要があります。 その場合は、次の情報が表示されます。
[インターネット エクスプローラー] ダイアログ ボックスで、次の手順に従って、信頼済みサイトの一覧に about:internet を追加します。
- [ ツール ] メニューを選択し、[ インターネット オプション] を選択します。
- [セキュリティ] タブを選択します。
- [ 信頼できるゾーン] を選択し、[サイト] を選択 します。
- これにより、XSL が機能します。
信頼されたサイトの一覧に about:internet を追加すると、[要求の概要] ページが表示されます。
失敗した要求の概要が一番上に記録され、 Errors & Warnings テーブルは
WARNING
、ERROR
またはCRITICAL ERROR
重大度のイベントを識別します。 この例では、WARNING
重大度レベルは ISAPI の制限によるものです。 読み込もうとしたイメージは %windir%\system32\inetsrv\asp.dllでした。テキスト エディターを使用して生の XML ファイルを直接開き、イベントの内容を確認します。
概要
2 つのタスクを完了しました。失敗した要求トレースを構成して、IIS が 404.2 状態コードで返す要求のトレースをキャプチャし、IIS が要求のトレースをキャプチャしたことを確認します。 また、 freb.xml ログ ファイルに、404.2 のリターン コードを持つ要求以外の要求が含まれていないことも確認しました。 エラー ログ ファイルを調べてください。エラーの原因は、その要求に対して拡張機能が無効になっていたことが原因であると判断しました。 他の HTML 以外のページ (.gif ファイルや .jpg ファイルなど) を試して、ログ ファイルにこれらのトレースが追加されない点に注意してください。 また、このイベントを 404 に簡単に変更したり、failureDefinitions で timeTaken フィールドを設定することで、要求に 30 秒を超える時間がかかる場合にエラーをキャプチャすることもできます。
バックアップを復元する
この記事のタスクを完了したので、構成のバックアップを復元できます。 管理者権限で次のコマンドを実行します。
%windir%\system32\inetsrv\appcmd restore backup cleanInstall