IIS7 のトレース機能を使用して失敗した要求をトラブルシューティングする
発行日 : 2007 年 12 月 12 日 (作業者 : IIS Team)
発行日 : 2008 年 3 月 6 日 (作業者 : IIS Team)
はじめに
要求ベースのトレースでは、経験した問題を再現できるという条件で、要求で発生した内容と理由を正確に把握する良い方法が提供されます。一部の要求におけるパフォーマンスの低下などの問題、別の要求に関する認証関連の障害、ASP または ASP.net からのサーバー 500 エラーでさえ、問題の発生時に問題のトレースをキャプチャしている場合を除いて、多くの場合、そのトラブルシューティングと解決は簡単ではありません。
ここで、失敗した要求トレースが機能します。要求に対してトレース イベントをバッファーし、"失敗" の定義が提供されている場合、要求が "失敗" した場合にのみ、それらのイベントをディスクにフラッシュするように設計されています。404.2 を受け取る理由、または要求がハングする理由を知りたい場合は、失敗した要求トレースを使用します。
このチュートリアルで説明するタスクには、次の項目が含まれます。
- 失敗した要求トレース モジュールを有効にする
- 失敗した要求トレースのログ ファイルの意味を構成する
- 失敗の定義やトレースする領域など、失敗した要求トレースを保持する URL を定義する
- 失敗の条件を生成し、結果のトレースを表示する
前提条件
IIS 7.0 のインストール
まず IIS 7.0 をインストールしてから、この記事のタスクを実行します。IIS がインストールされているかどうかをチェックするには、https://localhost/ を参照してください。IIS 7.0 がインストールされていない場合は、Windows Server 2008 への IIS 7.0 のインストールのインストール手順を参照してください。IIS 7.0 をインストールすると、次の機能もインストールされます。
- ASP.NET ([World Wide Web サービス] - [アプリケーション開発機能] - [ASP.NET])
- 追跡 ([World Wide Web サービス] - [健常性と診断] - [追跡])
管理者としてログインする
ログインするアカウントは、管理者アカウントであるか、Administrators グループに属していることを確認してください。
注 : Administrators グループに属していても、完全な管理者特権を既定で付与されません。多くのアプリケーションを管理者として実行する必要があります。アプリケーション アイコンを右クリックして [管理者として実行] を選択すると、管理者として実行できます。
バックアップを作成する
次のタスクを実行する前に、構成のバックアップを作成する必要があります。 これを実行するには、次の手順を実行します。
[スタート] ボタンをクリックし、[すべてのプログラム]、[アクセサリ] の順にポイントして、[コマンド プロンプト] を右クリックして [管理者として実行] をクリックします。
このコマンド プロンプトで次のコマンドを実行します。
%windir%\system32\inetsrv\appcmd add backup cleanInstall
サンプル コンテンツを作成する
%systemdrive%¥inetpub¥wwwroot フォルダーですべてを削除します。
前の手順で起動した管理者のコマンド プロンプトでから、inetpub¥wwwroot にある test.asp というファイルに添付のコードを貼り付けます。
<h2>Failed Request Tracing Lab</h2><br>
<br>Today's date is <% response.write(Date()) %>
ASP を無効にする
このタスクでは、ASP を無効にする必要があります。例のように、この記事のタスクの目的に対してのみ ASP を無効にします。
ASP を無効にするには、inetmgr.exe を開きます (管理者のコマンド プロンプトで、start inetmgr.exe を実行します)。
中央のウィンドウで、[ISAPI および CGI の制限] をダブルクリックします。
[Active Server Pages] を選択し、操作ウィンドウにある [拒否] をクリックして、ASP を無効にします。
失敗した要求トレースの有効化
失敗した要求トレースを有効にしてから、ログ ファイルを格納する場所を構成する必要があります。このタスクでは、[Default Web Site] の [失敗した要求トレース] を有効にし、ログ ファイルを置く [失敗した要求トレース] を通知します。失敗ログを生成する失敗を構成します。
手順 1 : サイトの失敗した要求トレースを有効にして、ログ ファイルのディレクトリを構成する
管理者のコマンド プロンプトで「start inetmgr」と入力します。
[接続] パネルで、コンピューター名、サイト フォルダーを展開して、[Default Web Site] をlクリックします。
[操作] ウィンドウの右下の [構成] で、[失敗した要求トレース...] リンクをクリックします。
次のダイアログ ボックスで、次のように構成します。
- [有効にする] チェック ボックスをオンにします。
- その他の設定の既定値をそのままにします。
- [OK] をクリックして次に進みます。
これで [Default Web Site] の [失敗した要求トレース] の [ログ記録] が有効になりました。%windir%¥system32¥inetsrv¥config¥applicationHost.config ファイルをオンにして、構成の表示内容を確認します。次のようになっている必要があります。
<system.applicationHost>
<sites>
<!-- site & app defaults -->
<site name="Default Web Site" id="1">
<!-- other site configuration -->
<traceFailedRequestsLogging enabled="true" />
</site>
</sites>
</system.applicationHost>
手順 2 : 失敗の定義を構成する
この手順では、トレースする領域を含む、URL の失敗の定義を構成します。このシナリオでは、まだ有効化されていない拡張機能への要求に関して IIS 7.0 によって返された 404.2 をトラブルシューティングします。これにより、有効にする必要がある特定の拡張機能、および有効にする必要がないすべての未知の拡張機能を見つけ出すことができます。
管理者のコマンド プロンプトで「start inetmgr」と入力します。
[接続] パネルで、コンピューター名、サイト フォルダーを展開して、[Default Web Site] をlクリックします。
中央のウィンドウの [IIS] で、[失敗した要求トレース規則] をダブルクリックします。
[完了] をクリックします。
[操作] ウィンドウで、[追加...] をクリックします。これにより、[失敗した要求トレース規則の追加] ウィザードが起動されます。
[トレースするコンテンツの指定] ページで、トレースする対象の [All Content (*)] オプションをクリックして、[次へ] をクリックします。
[トレース条件の定義] 画面で、[状態コード] チェック ボックスをオンにして、トレースする状態コードとして「404.2」と入力します。
[次へ] をクリックします。[トレース プロバイダの選択] ページが表示されます。
[WWW Server] チェック ボックスをオンにして、[Areas] にある [セキュリティ] チェック ボックスをオンにします ([セキュリティ] 以外にオンになっているその他すべての領域をオフにします)。生成される問題は、戻されたセキュリティ エラーのトレース イベントの原因です。一般的に、[WWW Server] の [セキュリティ] 領域の追跡の構成を使用して、認証および承認 (ISAPI 制限一覧の問題を含む) の問題を診断できます。しかし、FREB.xsl スタイル シートによってエラーと警告を明確にできるので、既定の構成を使用してもすべての領域のプロバイダーですべてのイベントをログ記録できます。
[Verbosity] にある [詳細] を選択します。
[完了] をクリックします。 [Default Web Site] の次の定義を確認する必要があります。
この手順の IIS マネージャーの UI では、<location> タグを使用して、%windir%¥system32¥inetsrv¥config¥applicationHost.config ファイルの構成を記述しました。構成は次のようになっています。
<location path="Default Web Site">
<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>
</location>
失敗した要求のログ ファイルのテストと表示
このタスクでは、失敗した要求を生成し、結果のトレース ログを表示します。HTTP 応答コード 404.2 で失敗する https://localhost/*.asp 要求に対するトレース ログをキャプチャするために IIS 7.0 を構成したことに留意してください。ここでは、この構成が機能していることを確認します。
手順 1 : エラーおよび失敗した要求のログ ファイルを生成する
新規の Internet Explorer ウィンドウを開きます。
アドレスに「https://localhost/test.asp」と入力します。
次の画面を参照します。
次に、ログ ファイルを検索します。
手順 2 : 失敗した要求のログ ファイルを表示する
失敗が生成されると、管理者のコマンド プロンプト ウィンドウを使用して、%systemdrive%¥inetpub¥logs¥FailedReqLogFiles¥W3SVC1 に移動し、[開始] を実行して、そのディレクトリからエクスプローラー ウィンドウを起動します。
ここでいくつかの事項に注意してください。1 つは、IIS 7.0 で失敗した要求のログ ファイルが記述されると、失敗した要求ごとに 1 ファイルが記述されることです。もう 1 つは、freb.xsl スタイル シートもディレクトリごとに記述されることです。これが、失敗した要求のログ ファイル (前記の fr000001.xml など) を表示するのに非常に役立ちます。
404.2 エラーのログ ファイルを右クリックし、[プログラムから開く]、[Internet Explorer] の順に選択してファイルを IE で開きます。失敗した要求のトレース ファイルを初めて開く場合は、Internet Explorer の [セキュリティ強化の構成] が既定で有効になっているため、信頼済みサイトの一覧に「about:internet」を追加する必要があります。この場合、次の画面が表示されます。
[追加...] をクリックして、信頼済みサイトの一覧に about:internet マークの Web を追加します。これにより、XSL が機能します。信頼済みサイトの一覧に「about:internet」を追加すると、次の画面が表示されます。
失敗した要求の概要が上部に記録され、[エラーと警告] 表に重大度 [警告]、[エラー]、または [重大なエラー] が記載されます。この例の場合では、ISAPI 制限により拒否されました。読み込もうとしているイメージは、%windir%¥system32¥inetsrv¥asp.dll でした。
テキスト エディターを使用して生の XML を直接開き、各イベントのコンテンツを検証します。
まとめ
次の 2 つのタスクを完了しました。失敗した要求のトレースを構成して、IIS 7.0 で 404.2 状態コードと共にトレースが返される場合に * のトレースをキャプチャしました。さらに、IIS 7.0 で要求のトレースがキャプチャされたことを確認しました。また、実行した要求で 404.2 リターン コードが返されなかったので、freb*.xml ログ ファイルには、実行した要求に対してその他の要求が含まれていないことを確認しました。失敗のログ ファイルを調べて、この要求に対して拡張機能が有効化されていなかったという失敗の原因を判断しました。HTML ではない他のページ (gif、jpg など) でも実行して、ログ ファイルには、これらのトレースが追加されないことを確認できます。さらに、これを 404 に簡単に変更できます。または、失敗の定義の [timeTaken] フィールドを設定することにより、要求が 30 秒より時間がかかる場合に失敗をキャプチャできます。
バックアップの復元
この記事のタスクを終了したので、バックアップを復元します。管理者特権が与えられたコマンド プロンプトから次のコマンドを実行してください。
%windir%¥system32¥inetsrv¥appcmd restore backup cleanInstall