Azure Webサイトで遅いリクエストを取得する失敗リクエストトレースの使用方法

IIS 7移行であれば、トレースルールを定義することでWebサイトやアプリケーション、ディレクトリの失敗リクエストトレースを取得することができます。

2種類のルールが提供されています。

  • ステータスコード(statusCode)
    トレースしたいステータスコードを指定します。コンマでステータスコードを区切ることで、複数のステータスコードを入力することができます。「404.2,500」のようなサブステータスコードを使用することもでき、また「400-599」のように範囲でサブステータスを指定することもできます。
  • かかった時間(timeTaken)
    プロセスがリクエストを処理するのに使用できる最大時間を指定できます。指定した時間を超えると失敗となり、トレースされます。

Windows Azure Web Sites(WAWS)では、ポータル上で、「FAILED REQUESTTRACING」をオンにすることで使用できます。

しかし、WAWSではステータスコード「400-600」のルールのみが失敗リクエストとして定義されています。このルールでは、処理に長い時間かかっているが、ステータスコードが200となった処理をトレースすることができます。

ステータスコードが400以上のリクエスト、時間がかかったリクエストの両方をトレースするためには次の手順で設定する必要がります。

  1. Webサイトのweb.configで次の設定をします。
  2. WAWSポータルで、IIS loggingと「FAILED REQUESTTRACING」をオンにします。

<system.webServer>
  <tracing>
    <traceFailedRequests>
      <remove path="*" />
      <add path="*">
        <traceAreas>
          <add provider="ASP" verbosity="Verbose" />
          <add provider="ASPNET" areas="Infrastructure,Module,Page,AppServices" verbosity="Verbose" />
          <add provider="ISAPI Extension" verbosity="Verbose" />
          <add provider="WWW Server" areas="Authentication,Security,Filter,StaticFile,CGI,Compression,Cache,RequestNotifications,Module,FastCGI" verbosity="Verbose" />
        </traceAreas>
        <failureDefinitions timeTaken="00:00:10" statusCodes="400-999" />
      </add>
    </traceFailedRequests>
  </tracing>
</system.webServer>

この変更で、次のリクエストをトレースできるようになります。

  • IISパイプラインで10秒以上かかっているリクエスト
  • ステータスコードが400番以上

情報源

MSDNフォーラムで、マイクロソフトのWZhaoさんが投稿した「Using Failed Request Tracing for slow requests」を意訳したエントリーです。