Application Insights でランタイムの例外を見つけて診断する

Application Insights は、ご使用のアプリケーションからテレメトリを収集し、ランタイムの例外を特定して診断するのに役立てます。 このチュートリアルでは、アプリケーションを使用してこのプロセスを見ていきます。 学習内容は次のとおりです。

  • プロジェクトを変更して、例外の追跡を有効にします。
  • アプリケーションの各種コンポーネントに対する例外を特定します。
  • 例外の詳細を表示します。
  • 例外のスナップショットをデバッグ用に Visual Studio にダウンロードします。
  • クエリ言語を使用して失敗した要求の詳細を分析します。
  • 欠陥のあるコードを修正する新しい作業項目を作成します。

前提条件

このチュートリアルを完了するには、以下が必要です。

  • 次のワークロードを使って、Visual Studio 2019 をインストールします。
    • ASP.NET および Web の開発
    • Azure の開発
  • Visual Studio Snapshot Debugger をダウンロードしてインストールします。
  • Visual Studio スナップショット デバッガーを有効にする
  • .NET アプリケーションを Azure にデプロイし、Application Insights SDK を有効にする
  • 開発またはテスト環境でご使用のコードを変更して、例外を生成します。チュートリアルで、ご使用のアプリケーションの例外の ID を追跡するためです。

Azure へのサインイン

Azure portal にサインインします。

エラーを分析する

Application Insights は、アプリケーション内の失敗を収集します。 これにより、さまざまな操作の頻度を表示できるため、影響が最も大きい問題に集中して取り組むのに役立ちます。 次に、これらの失敗の詳細をドリルダウンして、根本原因を特定できます。

  1. [Application Insights] を選択してから、ご利用のサブスクリプションを選択します。

  2. [失敗] パネルを開くには、[調査] メニューの下で [失敗] を選択するか、[失敗した要求] グラフを選択します。

    失敗した要求を示すスクリーンショット。

  3. [失敗した要求] ペインには、失敗した要求の数と、アプリケーションの各操作で影響を受けたユーザーの数が表示されます。 ユーザーがこの情報を並べ替えることによって、ユーザーに最も影響する失敗を特定できます。 この例では、GET Employees/Create (従業員を取得/作成)GET Customers/Details (顧客を取得/詳細) が有力な調査候補です。失敗と影響を受けたユーザーの数が多いためです。 操作を選択すると、右のペインにこの操作のより詳しい情報が表示されます。

    [失敗した要求] ペインを示すスクリーンショット。

  4. エラー発生率が急に増加している期間を詳しく見るには、タイム ウィンドウを狭めます。

    [失敗した要求] ウィンドウを示すスクリーンショット。

  5. フィルター処理された結果の数のボタンを選択すると、関連するサンプルが表示されます。 提案されるサンプルには、たとえサンプリングがいずれかのコンポーネントで有効であったとしても、すべてのコンポーネントの関連するテレメトリーが含まれます。 検索結果を選択すると、失敗の詳細が表示されます。

    失敗した要求のサンプルを示すスクリーンショット。

  6. 失敗した要求の詳細にはガント チャートが表示されます。これには、このトランザクションに 2 つの依存関係エラーがあり、これらもトランザクションの合計持続時間のうちの 50% を超える時間を占めていることが示されます。 このエクスペリエンスは、この操作 ID に関連する分散アプリケーションのコンポーネント全体のすべてのテレメトリを示します。 いずれかの項目を選択すると、右側に詳細が表示されます。

    失敗した要求の詳細を示すスクリーンショット。

  7. 操作の詳細には、エラーを引き起こしたと考えられる形式例外も示されます。 無効な郵便番号が原因であることを確認できます。 デバッグのスナップショットを開くと、Visual Studio でコード レベルのデバッグ情報を確認できます。

    例外の詳細を示すスクリーンショット。

欠陥コードを特定する

Snapshot Debugger は、お使いのアプリケーションで最も一般的な例外のスナップショットを収集し、運用環境におけるその根本原因の診断をサポートします。 ポータルで [Debug Snapshots (デバッグ スナップショット)] を表示して、コール スタックを表示し、各呼び出しスタック フレームで変数を確認できます。 その後、スナップショットをダウンロードして Visual Studio 2019 で開くことで、ソース コードをデバッグできます。

  1. 例外のプロパティで、[デバッグ スナップショットを開く] を選択します。

  2. [スナップショットのデバッグ] ペインが開き、要求のコール スタックが表示されます。 いずれかの方法を選択して、要求時のすべてのローカル変数の値を表示します。 この例の先頭の方法から順に、値を持たないローカル変数を確認できます。

    [スナップショットのデバッグ] ペインを示すスクリーンショット。

  3. 有効な値を持つ最初の呼び出しは ValidZipCode です。 郵便番号に、整数に変換できない文字が指定されたことがわかります。 この問題は、修正する必要があるコードのエラーのようです。

    修正が必要なコードのエラーを示すスクリーンショット。

  4. このスナップショットを Visual Studio にダウンロードして、修正する必要がある実際のコードを見つけることができます。 これを行うには、[スナップショットのダウンロード] を選択します。

  5. スナップショットは、Visual Studio に読み込まれます。

  6. これで、例外の原因となったコード行を素早く特定するデバッグ セッションを Visual Studio Enterprise で実行できます。

    コード内の例外を示すスクリーンショット。

分析データを使用する

Application Insights によって収集されたすべてのデータはAzure Log Analytics に保存されます。これには、さまざまな方法でデータを分析するために使用できる高度なクエリ言語が用意されています。 このデータを使用して、調査中の例外を生成した要求を分析できます。

  1. コードの上の CodeLens 情報を選択して、Application Insights が提供するテレメトリを表示します。

    CodeLens 内のコードを示すスクリーンショット。

  2. [影響の分析] を選択して、Application Insights Analytics を開きます。 影響を受けたユーザー、ブラウザー、リージョンなどの失敗した要求に関する詳細情報を提供するいくつかのクエリが取り込まれています。

    複数のクエリを含む [Application Insights] ウィンドウを示すスクリーンショット。

作業項目を追加する

Application Insights を Azure DevOps や GitHub などの追跡システムに接続する場合は、Application Insights から直接、作業項目を作成できます。

  1. Application Insights の[例外プロパティ] ペインに戻ります。

  2. [新しい作業項目] を選択します。

  3. [新しい作業項目] ペインが開き、既に取り込まれている例外の詳細が表示されます。 保存する前に、さらに情報を追加できます。

    [新しい作業項目] を示すスクリーンショット。

次のステップ

これで、ランタイムの例外を特定する方法を学習しました。次のチュートリアルに進んで、パフォーマンスの問題を特定して診断する方法を学習してください。