次の方法で共有


Application Insights を使用してエラー、パフォーマンス、およびトランザクションを調査する

Application Insights は、 アプリケーションからテレメトリを収集して、エラーの診断と低速なトランザクションの調査に役立ちます。 これには、次の 4 つの重要なツールが含まれています。

  • エラー - エラー、例外、および障害を追跡し、迅速な問題解決と安定性の向上のための明確な分析情報を提供します。

  • パフォーマンス - 応答時間と操作数を表示することで、アプリケーションのボトルネックをすばやく特定し、解決するのに役立ちます。

  • トランザクション検索 - ユーザーは、ページ ビュー、例外、カスタム イベントなどの個々のテレメトリ項目を見つけて調べることができます。

  • トランザクション診断 - エンドツーエンドのトランザクションの詳細に関する包括的な分析情報を通じて、コンポーネントの問題をすばやく特定するのに役立ちます。

これらのツールを組み合わせることで、Web アプリケーションの継続的な正常性と効率性が確保されます。 これらを使用して、ユーザーに最も影響を与える問題や拡張機能を特定できます。

Application Insights の [失敗] ビューにアクセスするには、[概要] ウィンドウの [失敗した要求] グラフ、またはリソース メニューの [調査] カテゴリの下にある [失敗] を選択します。

Application Insights の [失敗] ビューに到達する方法を示すスクリーンショット。

リソースを選択し、トリアージ セクションからエラーを調査することで、アプリケーション マップからエラー ビューにアクセスすることもできます。

トランザクション診断には、他の 3 つのエクスペリエンスのいずれかを使用してアクセスできます。 詳細については、「テレメトリの 調査」を参照してください。

概要

[ 失敗] ビューには、アプリケーションに対して収集されたすべての失敗した操作の一覧と、それぞれにドリルダウンするオプションが表示されます。 これにより、影響を受けるユーザーの頻度とユーザー数を表示して、影響が最も大きい問題に取り組む作業に集中できます。

Application Insights の [失敗] ビューを示すスクリーンショット。

Azure Monitor OpenTelemetry Distro または JavaScript SDK によって送信されるすぐに使用できるテレメトリに加えて、テレメトリ (カスタム イベントなど) を追加および変更できます。

詳細については、「 .NET、Java、Node.js、Python アプリケーション用の Azure Monitor OpenTelemetry を追加および変更する」を参照してください。

テレメトリのフィルター処理

既定のフィルター

すべてのエクスペリエンスを使用すると、時間範囲でテレメトリをフィルター処理できます。 さらに、各エクスペリエンスには、独自の既定のフィルターが付属しています。

[ ロール ] フィルター メニューから表示するサービス (クラウド ロール名) またはマシン/コンテナー (クラウド ロール インスタンス) を選択できます。 これにより、アプリケーションの特定の部分内で問題やパフォーマンスの傾向を分離できます。

クラウド ロール名クラウド ロール インスタンスを設定する方法については、「Azure Monitor OpenTelemetry の構成」を参照してください。

フィルターの追加

プロパティの値に基づいてイベントをフィルター選択できます。 使用可能なプロパティは、選択したイベントまたはテレメトリの種類によって異なります。 フィルターを追加するには:

  1. [フィルター] アイコンを選択してフィルターを追加します。

    フィルター ピル

  2. 左側のドロップダウン リストからプロパティを選択します。

  3. 中央のドロップダウン リストから、 =!=contains、または not containsのいずれかの演算子を選択します。

  4. 右側のドロップダウン リストから、フィルター処理するすべてのプロパティ値を選択します。

    フィルター値の右側の値は、現在のフィルター選択されたセットに含まれるイベントの発生回数を表します。

  5. 別のフィルターを追加するには、[ フィルター] アイコン をもう一度選択します。

検索テレメトリ

操作リストの上にある [検索] を使用して 、特定の操作を検索してアイテムをフィルター処理 できます。

[検索] フィールドを示すスクリーンショット。

分析データを使用する

Application Insights によって収集されたすべてのデータは Log Analytics に格納されます。Log Analytics には、調査中の例外を生成した要求を分析するための豊富なクエリ言語が用意されています。

ヒント

Log Analytics のシンプル モードでは、ログ データを分析および視覚化するための直感的なポイント アンド クリック インターフェイスが提供されます。

  1. パフォーマンス、エラー、またはトランザクション検索ビューで、上部のナビゲーション バー の [ログで表示 ] を選択し、ドロップダウン メニューからクエリを選択します。

    [ログで表示] ボタンが強調表示されている上部のアクション バーのスクリーンショット。

  2. これにより、[ ログ ] ビューが表示され、クエリをさらに変更したり、サイドバーから別のクエリを選択したりできます。

    [ログ] ビューを示すスクリーンショット。

テレメトリを調査する

エラーまたは例外の根本原因を調査するには、依存関係と例外の詳細を含む詳細なエンド ツー エンド トランザクションの詳細ビューについて、問題のある操作を詳しく調べます。

  1. 操作を選択すると、その操作の 上位 3 つの応答コード上位 3 つの例外の種類および上位 3 つの失敗した依存関係が表示されます

  2. [ ドリル イン] で、フィルター処理された結果の数を含むボタンを選択して、サンプル操作の一覧を表示します。

  3. サンプル操作を選択して、 エンドツーエンドのトランザクションの詳細ビューを 開きます。

    [ドリルイン] ボタンが強調表示された [失敗] ビューを示すスクリーンショット。

    推奨サンプルには、いずれかのコンポーネントでサンプリングが行われていた場合でも、すべてのコンポーネントからの関連するテレメトリがあります。

クライアント側のパフォーマンスとエラーを分析する

Application Insights を使用して Web ページをインストルメント化すると、ページ ビュー、ブラウザー操作、依存関係を可視化できます。 このブラウザー データを収集するには 、Web ページにスクリプトを追加する必要があります

  1. スクリプトを追加したら、[パフォーマンス] ビューまたは [失敗] ビューの [ブラウザー] トグルを選択して、ページ ビューとそれに関連するパフォーマンス メトリックにアクセスできます。

    上部のアクション バーの下にある [サーバー/ブラウザー] トグルが強調表示されているスクリーンショット。

    このビューには、ブラウザーの観点から、アプリケーションのさまざまなテレメトリの視覚的な概要が表示されます。

  2. ブラウザー操作の場合、 エンド ツー エンドのトランザクションの詳細 ビューには、ブラウザーの種類とその場所など、ページを要求しているクライアントのページ ビュー プロパティ が表示されます。 この情報は、特定の種類のクライアントに関連するパフォーマンスの問題があるかどうかを判断するのに役立ちます。

    [ページ ビューのプロパティ] セクションが強調表示されている [エンド ツー エンド トランザクションの詳細] ビューを示すスクリーンショット。

Application Insights は、サーバーのパフォーマンスのために収集されたデータと同様に、ログを使用してすべてのクライアント データを詳細な分析に使用できるようにします。

トランザクションの診断エクスペリエンス

トランザクション診断エクスペリエンス (エンド ツー エンド トランザクションの詳細ビューとも呼ばれます) には、トランザクションのガント チャートが表示されます。このグラフには、期間と応答コードを含むすべてのイベントが一覧表示されます。

この診断エクスペリエンスでは、Application Insights で監視されているすべてのコンポーネントのサーバー側テレメトリが 1 つのビューに自動的に関連付けられ、複数のリソースがサポートされます。 Application Insights によって基になる関係が検出されるため、トランザクションの速度低下または障害の原因となったアプリケーション コンポーネント、依存関係、または例外を簡単に診断することができます。

特定のイベントを選択すると、基になるコマンドや呼び出し履歴などの追加情報など、そのプロパティが表示されます。

このビューには 4 つの重要な部分があります。

結果一覧が強調表示されたトランザクション ビューを示すスクリーンショット。

この折りたたみ可能なウィンドウには、フィルター条件を満たすその他の結果が表示されます。 いずれかの結果を選ぶと、先ほど示した 3 つのセクションの対応する項目が更新されます。 サンプリングがいずれかのコンポーネントで有効になっている場合でも、すべてのコンポーネントで使用可能な詳細を含む可能性が最も高いサンプルを探そうとしています。 これらのサンプルは提案として表示されます。

.NET Profiler とスナップショット デバッガー

.NET Profiler またはスナップショット デバッガーは、パフォーマンスと障害の問題をコード レベルで診断するのに役立ちます。 このエクスペリエンスを使用すると、任意のコンポーネントからの .NET Profiler トレースやスナップショットを 1 回の選択で表示できます。

プロファイラー トレース

.NET Profiler は、操作に対して実行された実際のコードと各ステップに必要な時間を示すことで、コード レベルの診断をさらに進めるのに役立ちます。 プロファイラーが定期的に実行されるため、一部の操作にトレースがない場合があります。 時間の経過と共に、より多くの操作がトレースされます。

  1. .NET Profiler を起動するには、 パフォーマンス ビューで操作を選択し、 Profiler トレースに移動します。

    [Profiler トレース] ボタンが強調表示されている [パフォーマンス] ビューのスクリーンショット。

    または、 エンド ツー エンドのトランザクションの詳細 ビューでこれを行うことができます。

    [Profiler トレース] ボタンが強調表示されている [エンドツーエンドのトランザクションの詳細] ビューを示すスクリーンショット。

  2. トレースには、操作全体の根本原因を診断できるように、各操作の個々のイベントが表示されます。 最も長い期間を持つ上位の例のいずれかを選択します。

  3. イベントの解釈に関するドキュメントについては、 パフォーマンス ヒント (この例では CPU 時間) のリンクを選択してください。

  4. さらに分析するには、[ トレースのダウンロード ] を選択してトレースをダウンロードします。 PerfView を使用して、このデータを表示できます。

    .NET Profiler を示すスクリーンショット。

    ホット パス は既定で選択されています。 調査中の問題に寄与するイベントの特定のパスが強調表示され、イベント名の横にある炎アイコンで示されます。

.NET Profiler が動作しない場合は、serviceprofilerhelp@microsoft.com にお問い合わせください。

デバッグ スナップショット

例外のコード レベルのデバッグ情報を表示するには:

  1. ガント チャートで例外を選択し、[ デバッグ スナップショットを開く] を選択します。

    [デバッグ スナップショットを開く] ボタンが強調表示されている [エンド ツー エンド トランザクションの詳細] ビューを示すスクリーンショット。

  2. スナップショット デバッガー には呼び出し履歴が表示され、各呼び出し履歴フレームで変数を検査できます。 メソッドを選択すると、要求時にすべてのローカル変数の値を表示できます。

  3. その後、スナップショットをダウンロードして Visual Studio で開くことで、ソース コードをデバッグできます。

    [スナップショットのダウンロード] ボタンが強調表示されているスナップショット デバッガーを示すスクリーンショット。

スナップショット デバッガーが動作しない場合は、snapshothelp@microsoft.com にお問い合わせください。

作業項目の作成

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

この手順を初めて行う場合は、Azure DevOps 組織とプロジェクトへのリンクを構成するように求められます。

  1. エンド ツー エンドのトランザクションの詳細ビューに移動し、イベントを選択します。

  2. [ 詳細 ] セクションで、[ 作業項目の作成 ] を選択し、新しいテンプレートを作成するか、既存のテンプレートを選択します。

    [作業項目の作成] ボタンが強調表示されている [エンドツーエンドのトランザクションの詳細] ビューを示すスクリーンショット。

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

よく寄せられる質問

このセクションでは、一般的な質問への回答を示します。

トランザクションの検索

コンポーネントとは

コンポーネントは、分散型またはマイクロサービス アプリケーションの個別にデプロイできる部分です。 開発者と運用チームには、これらのアプリケーション コンポーネントによって生成されたテレメトリに対するコード レベルの可視性またはアクセス権があります。

  • コンポーネントは、チームや組織がアクセスできない可能性がある SQL、イベント ハブなどの "監視される" 外部依存関係 (コードまたはテレメトリ) とは異なります。
  • コンポーネントは、任意の数のサーバー、ロール、またはコンテナー インスタンス上で実行されます。
  • サブスクリプションが異なる場合でも、コンポーネントは別個の Application Insights インストルメンテーション キーの場合があります。 コンポーネントは、1 つの Application Insights インストルメンテーション キーに報告されるさまざまなロールの場合もあります。 新しいエクスペリエンスでは、その設定方法に関係なく、すべてのコンポーネントの詳細が表示されます。

保持されるデータの量

制限の概要」を参照してください。


サーバー要求に POST データを表示するにはどうすればよいですか?

POST データは自動的に記録されませんが、TrackTrace または log の呼び出しを使用できます。 メッセージ パラメーターに POST データを格納します。 プロパティと同じ方法でメッセージをフィルター処理することはできませんが、サイズの制限が緩和されます。


Azure 関数検索で結果が返されないのはなぜですか?

Azure Functions は URL クエリ文字列をログしません。

トランザクション診断

グラフに 1 つのコンポーネントが表示され、他のコンポーネントは詳細なしで外部依存関係としてのみ表示されるのはなぜですか?

次の理由が考えられます。

  • その他のコンポーネントは Application Insights を使用してインストルメント化されましたか。
  • それらには Application Insights SDK の最新の安定バージョンが使用されていますか。
  • これらのコンポーネントが個別の Application Insights リソースである場合、アクセス権を持っていることを確認します。 アクセス権を持っていて、コンポーネントが最新の Application Insights SDK でインストルメント化されている場合は、右上隅にあるフィードバック チャネルからお知らせください。

依存関係の重複する行が表示されます。この動作は想定されていますか?

現時点では、送信依存関係呼び出しと受信要求は区別して表示されます。 通常、2 つの呼び出しは、ネットワーク ラウンド トリップのために継続時間の値が異なる以外は、まったく同一に見えます。 先頭のアイコンと継続時間バーの個別のスタイルは、これらを区別するのに役立ちます。 このデータの表示方法はわかりにくいですか。 フィードバックをお待ちしております。


異なるコンポーネントインスタンス間のクロックのズレについてはどうですか。

タイムラインは、トランザクションチャートにおけるクロックスキューを考慮して調整されます。 詳細ウィンドウか、または Log Analytics を使用することで、正確なタイムスタンプを確認できます。


新しいエクスペリエンスで、関連する項目のクエリのほとんどが不足しているのはなぜですか?

この動作は設計によるものです。 すべての関連項目は、コンポーネント全体に渡って、上部と下部のセクションの左側で既に使用できます。 新しいエクスペリエンスの左側で扱われない関連項目が 2 つあります。このイベントの 5 分前後からのすべてのテレメトリと、ユーザー タイムラインです。


Application Insights JavaScript SDK を使用すると、トランザクションあたりのイベント数が少なくなりますか?

トランザクション診断エクスペリエンスでは、同じ操作 ID を共有する単一操作のすべてのテレメトリが表示されます。 既定では、Application Insights SDK for JavaScript は、一意のページ ビューごとに新しい操作を作成します。 シングルページ アプリケーション (SPA) では、1 つのページ ビュー イベントのみが生成され、生成されるすべてのテレメトリに対して 1 つの操作 ID が使われます。 その結果、多くのイベントが同じ操作に関連付けられる可能性があります。

このようなシナリオでは、自動ルート追跡を使用すると、SPA でのナビゲーションのために新しい操作が自動的に作成されます。 enableAutoRouteTracking を有効にして、URL ルートが更新されるたびにページ ビューが生成される (論理ページ ビューが発生する) ようにする必要があります。 操作 ID を手動で更新する場合は appInsights.properties.context.telemetryTrace.traceID = Microsoft.ApplicationInsights.Telemetry.Util.generateW3CId() を呼び出します。 手動で PageView イベントをトリガーすると、操作 ID もリセットされます。


トランザクションの詳細期間が上位要求期間に加算されないのはなぜですか?

ガント チャートで説明されていない時間は、追跡される依存関係の対象ではない時間です。 この問題は、外部呼び出しが自動または手動でインストルメント化されていない場合に発生する可能性があります。 また、外部呼び出しのためではなく、処理中にかかった時間が原因で発生することもあります。

すべての呼び出しがインストゥルメント化される場合、時間が費やされる根本原因はおそらくプロセスにあります。 プロセスの診断に役立つツールは .NET Profiler です。


Azure portal で Application Insights を移動中に "データの取得中にエラーが発生しました" というメッセージが表示された場合はどうしますか?

このエラーは、ブラウザーから必要な API を呼び出すことができなかったか、API から失敗応答が返されたことを示します。 この動作をトラブルシューティングするには、ブラウザーの InPrivate ウィンドウを開き、実行されているブラウザーの拡張機能があれば無効にしても、このポータル動作を再現できるかどうかを確認します。 それでもポータル エラーが発生する場合は、他のブラウザーまたは他のマシンでテストを行い、API 呼び出しに失敗しているクライアント コンピューターから DNS や他のネットワーク関連の問題を調査します。 ポータル エラーが引き続き発生し、さらに調査する必要がある場合は、予期しないポータルの動作を再現しながら ブラウザー ネットワーク トレースを収集 し、Azure portal からサポート ケースを開きます。

次のステップ