WCF 呼び出しメトリックを使用した履歴の監視

[WCF 呼び出しの履歴] セクションに、AppFabric によって管理される .NET Framework 4 WCF サービスおよび WF サービスに対する WCF 呼び出しの履歴メトリックが表示されます。[完了] および [エラー] サマリー メトリックにより、受信した WCF 呼び出しの成功と失敗の累積合計数が提供されます。[WCF 呼び出しの履歴] セクションを展開すると (下矢印または [WCF 呼び出しの履歴] タイトル バー上のサマリー メトリック リンク以外の任意の場所をクリックする)、[完了した呼び出し] または [サービス例外] に該当する上位 5 つのサービスが表示されます。この動作では、[エラー - 一般的な種類でグループ化] の数値も表示されます。これらの最上位レベルのサマリーの値、および降順の関連詳細ビューを使用して、サービスの WCF 呼び出しの履歴を監視することができます。

WCF 呼び出しの履歴メトリック

AppFabric ダッシュボードの [WCF 呼び出しの履歴] セクションでは、[WCF 呼び出しの履歴] タイトルがある網かけのヘッダー ボックスに WCF サービスの呼び出しのサマリー ビューが表示されます。以下のメトリックにより、正常に完了した WCF 呼び出しと正常に完了しなかった呼び出しの概要をすばやく確認できます。

  • [完了] サマリー メトリックは、受信した WCF 呼び出しのうち、エラーまたは例外が生成されずに完了し、OperationCompleted WCF イベントの種類が生成された呼び出しの累積合計数です。

  • [エラー] サマリー メトリックは、WCF スタック全体をとおして発生したすべての WCF 関連の例外およびユーザー定義のエラーを表す累積合計数です。このカウントに含まれるのは、失敗した呼び出しおよびエラーが発生した呼び出しによるエラー数だけではありません。

  • [スロットル ヒット] メトリックは、該当するスコープ内で展開されたいずれかのサービスにおける WCF 調整期間のカウント数を示します。1 つの調整期間は、WCF スロットルのしきい値を超えた時点で開始されます。この期間は、スループットがスロットルしきい値の 70% 未満まで減少すると終了します。

サマリー メトリックの下に、呼び出しの特定のカテゴリ内のサービス数を降順に要約する次のサービス メトリックがあります。

  • [完了した呼び出し - サービスでグループ化 (上位 5)] - 指定の期間内において、完了した WCF 呼び出しの合計数が最も多かった上位 5 つのサービス。

  • [サービス例外 - サービスでグループ化 (上位 5)] - 指定の期間内において、例外数が最も多かった上位 5 つのサービス。

  • [エラー - 一般的な種類でグループ化] – サービス例外またはユーザー定義のエラーの合計数のグループ化。サービス例外は、さらに 2 つの最も一般的な原因に分類されます。失敗した呼び出し、およびエラーが発生した呼び出しです。サービス例外は、アクティブ化エラーなど、失敗した呼び出しまたはエラーが発生した呼び出し以外の原因によって発生することもあります。

ダッシュボード内の [完了した呼び出し - サービスでグループ化 (上位 5)] または [サービス例外 - サービスでグループ化 (上位 5)] の列に、すべての追跡対象イベントが含まれているわけではありません。これらの [上位 5] の列に表示されるイベントには、エンドポイントおよびイベントを管理している内部 AppFabric サービスによって生成されたイベントは含まれていません。これらの 2 つの列には、完全なサービスの仮想パスがあるイベントだけが表示されます。コールバックやサービス例外のように WCF チャネル スタックの上位で生成されるイベントには、完全なサービスの仮想パスは含まれていません。完全なサービスの仮想パスが含まれていないイベントは、これらのカウントから除外されます。したがって、これらのカウントの値には、ユーザー アプリケーションではなくユーザー サービスだけが反映されます。

[追跡対象イベント] ページ

[追跡対象イベント] ページを使用して、サービス インスタンスの特定の WCF 呼び出しシーケンス中に発生したイベントの履歴ビューを取得できます。いずれかのサマリー メトリック ([完了] など) をクリックするか、[WCF 呼び出しの履歴] セクションの列 ([完了した呼び出し] 列など) の下にあるサービス リンクをクリックすると、[追跡対象イベント] ページが表示されます。

[追跡対象イベント] ページ

[AppFabric ダッシュボード] ページから [追跡対象イベント] に移動するときにクリックするリンクにより、WCF 呼び出しおよびイベント データがフィルターされ、[追跡対象イベント] ページにそのリンクに特定の内容が列挙されます。たとえば、[サービス例外 - サービスでグループ化 (上位 5)] の列の下にあるサービス エントリ リンクをクリックすると、[追跡対象イベント] ページが表示されます。このページに、サービス イベントの種類 (この場合は WCF 例外) によってフィルターされたイベントと、AppFabric ダッシュボードで選択したメトリックと期間に対応する生成日時が列挙されます。

ただし、[クエリ サマリー] フレーム内の 1 つ以上のフィールド ([イベント] など) の値を変更して、初期出力の内容を変更すれば、特定のイベントの種類について、より詳細なトラブルシューティングを行うことができます。たとえば、[追跡対象イベント] ページを表示したときの元のメトリックが [WCF 例外] だった場合、"イベント" フィールドの値を [すべての WCF イベント] に変更して [クエリの実行] をクリックすると、異なる結果を表示できます。

以下のオプションを使用して、表示するイベントの種類をフィルターすることができます。

  • [すべての WCF イベント] - 監視ストアで使用できるすべての WCF イベントが表示されます。完了した WCF 呼び出し、WCF 例外、失敗した WCF 呼び出し、およびエラーが発生した WCF 呼び出しが含まれますが、これだけに限りません。

  • [完了した WCF 呼び出し] - すべての完了した WCF 呼び出しが表示されます。

  • [すべての WCF エラー] - エラー レベルで生成されたすべてのイベント、つまりサービス例外およびユーザー定義エラーのイベントが表示されます。

  • [WCF 例外] - すべての WCF サービスの例外が表示されます。

  • [ユーザー定義の WCF エラー] - エラー レベルで生成されたすべてのユーザー定義イベントが表示されます。

  • [失敗した WCF 呼び出し] - すべての失敗した WCF 呼び出しが表示されます。

  • [エラーが発生した WCF 呼び出し] - エラーが発生したすべての WCF 呼び出しが表示されます。

  • [WCF スロットル ヒット] - WCF のスロットル イベントが表示されます。各イベントは調整期間を表し、WCF のスロットルしきい値を最初に超えた時点で生成されます。

  • [すべての WF イベント] - すべての WF イベントが表示されます。

詳細については、「[追跡対象イベント] ページ」を参照してください。

WCF 呼び出しの履歴メトリックの監視によるトラブルシューティング

前述の情報をトラブルシューティングのアプローチに組み込むことによって、[WCF 呼び出しの履歴] セクションを使用して、.NET Framework サービスへの WCF 呼び出しを監視することができます。[WCF 呼び出しの履歴] セクションの最初の表示により、WCF 呼び出しの状態について高レベルのサマリーを把握できます。発生した例外、失敗した呼び出し、またはエラーが発生した呼び出しを調べて、WCF 呼び出しレベルに問題が生じていないかどうかをすばやく確認できます。[サービス例外 - サービスでグループ化 (上位 5)] または [エラー - 一般的な種類でグループ化] のどちらかのサマリー メトリックにゼロ以外の値が含まれていれば、問題が発生している可能性があります。各サマリー メトリックは [追跡対象イベント] ページにリンクされているので、最初の [AppFabric ダッシュボード] ページに高レベルで要約されている WCF 呼び出しデータについて、明示的な詳細メトリックを確認できます。この生データにより、WCF 呼び出しに関する問題を特定するための追加情報が得られます。

[WCF 呼び出しの履歴] セクションを使用して、特定のスコープでの WCF サービスまたは WF サービスの WCF 呼び出しに問題がないかどうかを監視するシナリオを考えてみましょう。例外のサマリー メトリックの値がゼロ以外であれば、ウィジェットを展開して、上位 5 つのサービスによる例外の詳細を表示できます。これにより、潜在的な問題が最も多いサービスを確認できます。さらに、特定の問題があるサービスを選択し、列挙ページを表示してクエリの値を変更することにより、詳細情報を指定できます。

[WCF 呼び出しの履歴] ウィジェットの [エラー] サマリー ヘッダーに、何らかのエラーの発生を示すゼロ以外の値が含まれているとします。[WCF 呼び出しの履歴] ウィジェットを展開して、[サービス例外 - サービスでグループ化 (上位 5)] の列を調べれば、選択した期間中に最も多くの例外が発生した上位 5 つのサービスを確認できます。また、[エラー - 一般的な種類でグループ化] の列で、エラーの種類の詳細、つまりサービス例外 (ほとんどは失敗した呼び出し、またはエラーが発生した呼び出しが原因) またはユーザー定義のエラーを見ることができます。サービス リンクの 1 つをクリックして [追跡対象イベント] ページを表示すれば、エラーまたは例外についてより詳細な情報を取得できます。

ヒント

サービス X が上位 5 つのサービスの 1 つであれば、ここに表示されます。この場合、そのサービスのリンクをクリックして [追跡対象イベント] ページを表示できます。サービス X が上位 5 つのサービスに含まれていない場合は、セクション内の任意のメトリックをクリックすると [追跡対象イベント] ページが表示されます。ページが表示されたら、必要に応じて既存のクエリを変更できます (たとえば、適切なサービス名の条件を追加します)。

[追跡対象イベント] ページは、IIS 階層 X の特定のスコープで発生した例外の履歴ビューによって設定されています。一覧から WCF 例外イベントの 1 つをクリックすると、([追跡対象イベント] ページ内で) ページ下部の詳細ウィンドウにその例外の固有情報が表示されます。詳細ウィンドウでは、[概要]、[追跡対象変数]、または [エラー] タブに例外の情報が表示されます。[概要] タブには、[E2EActivityID] (エンド ツー エンド追跡の相関関係に使用される)、[EventType]、[ExceptionTypeName]、[EventSourceId]、およびその他のイベント関連情報など、イベントの全般情報が含まれています。[追跡対象変数] タブには、イベントに格納されている明示的な追跡対象変数の値が表示されます。[エラー] タブには、失敗に関する例外情報 (入手できる場合) が表示されます。この情報を使用して、WCF 例外をより詳しく理解し、トラブルシューティングに役立てることができます。

WCF 例外について追加のコンテキストが必要な場合には、一覧のイベントを右クリックして、[追跡対象 WF インスタンスの表示] をクリックします。この機能を使用できるのは、ワークフロー サービスから生成された WCF サービスの例外だけです。これにより、[追跡対象 WF インスタンス] ページに親インスタンスで使用可能なすべてのイベントが表示されます。また、ショートカット メニューから、WCF 呼び出しに関する [すべての関連イベントの表示] を選択することもできます。[追跡対象イベント] ページが更新され、初期イベントに関連するすべてのイベントが表示されます。

ヒント

[すべての関連イベントの表示] オプションを有効に利用するには、アプリケーションの監視レベルを [エンド ツー エンド監視] 以上に設定する必要があります。このレベルに設定すると、エンド ツー エンド アクティビティ ID (E2EActivityId) どうしを関連付ける転送イベントが監視インフラストラクチャによって収集されます。

または、[サービス例外 - サービスでグループ化 (上位 5)] の列を調べ、[失敗した呼び出し] または [エラーが発生した呼び出し] の数を確認します。[失敗した呼び出し] または [エラーが発生した呼び出し] の合計数は、セクション サマリー ウィンドウに表示される [WCF 例外] の合計数に相当します。どちらかのリンクをクリックして、[追跡対象イベント] ページを表示することもできます。クリックしたリンクに応じて、[失敗した WCF 呼び出し] または [エラーが発生した WCF 呼び出し] のイベントの列挙一覧がそれぞれ表示されます。前述したように、列挙一覧にある呼び出しイベントの 1 つを選択すると、詳細ウィンドウに追加情報が表示されます。また、適用される場合は、右クリックして、[すべての関連イベントの表示] または [追跡対象 WF インスタンスの表示] オプションを選択することもできます。

問題の解決に役立てるために追跡対象イベントのより詳細な情報を取得する方法については、「[追跡対象イベント] ページ」を参照してください。

WCF エラー情報の表示

AppFabric では、アプリケーションの監視レベルが「エンド ツー エンド監視」以上のレベルに構成されている場合に限り、WCF ベースのエラー情報が表示されます。このレベルでは、サービス間の WCF メッセージ フロー、および WF イベントと WCF イベント間の関係性がキャプチャされます。正常性の監視を含む下位の監視レベルでは、以下のセクションに WCF ベースのエラー情報は表示されません。

  • [AppFabric ダッシュボード] ページの [WCF 呼び出しの履歴] セクションの [エラー] または [サービス例外] 列

  • [追跡対象イベント] ページの詳細ウィンドウの [エラー] タブ

  • クエリ条件の結果として WCF イベントが表示される [追跡対象イベント] ページのセクション

たとえば、[追跡対象イベント] ページの [エラー] タブは、WCF 転送イベントを使用して、失敗した、またはエラーが発生した WCF 呼び出しイベントに対応するサービス モデル例外イベントから、例外情報を収集します。監視対象のアプリケーションが、エンド ツー エンド監視レベルより低い監視レベルを使用するように構成されている場合、WCF 転送イベントはキャプチャされません。したがって、詳細ウィンドウ内の [エラー] タブに値は表示されません。

エンド ツー エンド監視レベルを使用して転送イベントをキャプチャし、かつ追加の WF イベントを収集したくない場合は、次の手順でそのように設定することができます。

  1. C:\Windows\Microsoft.NET\Framework(64)\v4.0.xxx\CONFIG\Web.config で、サーバーのルート構成ファイルを開きます。

  2. <trackingProfile name="HealthMonitoring Tracking Profile"> および </trackingProfile> エントリとその中間にあるすべてのコードをクリップボードにコピーします。以下に、コピーする内容の例を示します。

    <trackingProfile name="HealthMonitoring Tracking Profile">
       <workflow activityDefinitionId="*">
    <workflowInstanceQueries>
    <workflowInstanceQuery>
       <states>
    <state name="Started" />
    <state name="Completed" />
    <state name="Terminated" />
    <state name="Canceled" />
    <state name="Unsuspended" />
    <state name="Persisted" />
    <state name="Aborted" />
    <state name="UnhandledException" />
       </states>
    </workflowInstanceQuery>
    </workflowInstanceQueries>
    
    <activityStateQueries>
    <activityStateQuery activityName="*">
    <states>
    <state name="Closed" />
    </states>
    </activityStateQuery>
    </activityStateQueries>
    
    <faultPropagationQueries>
       <faultPropagationQuery faultSourceActivityName="*" faultHandlerActivityName="*" />
    </faultPropagationQueries>
    
    <customTrackingQueries>
    <customTrackingQuery name="*" activityName="*" />
    </customTrackingQueries>
    </workflow>
    </trackingProfile>
    
  3. アプリケーションの Web.config ファイルを編集します。<system.serviceModel><tracking><profiles><trackingProfile> に有効な要素が完全に入れ子になっていることを確認します。以降の手順で、その中に <trackingProfile> 要素の内容を貼り付けます。

  4. <system.serviceModel><tracking><profiles> セクションの最初に、<remove name=”EndToEndMonitoring Tracking Profile” /> を追加します。

  5. 同じセクション内で、追加した remove タグの下に、手順 2. でクリップボードにコピーしたコード スニペットを貼り付けます。

  6. アプリケーションの Web.config ファイルで、HealthMonitoring Tracking Profile のテキストを EndToEndMonitoring Tracking Profile に置換します。ファイルを保存して、エディターを終了します。

  7. [アプリケーションの WCF と WF の構成] ダイアログ ボックスのスライダー コントロールを使用して、[アプリケーション監視レベル] を [エンド ツー エンド] に変更します。AppFabric は、アプリケーションの Web.config ファイルにあるローカルのエンド ツー エンド追跡プロファイル エントリを使用します。ただしこれは、エンド ツー エンド追跡プロファイル エントリを装った正常性の監視レベルの追跡プロファイルにすぎません。

関連項目

参照

[追跡対象イベント] ページ

  2011-12-05