統合されたコンポーネント間のトランザクションの診断

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

コンポーネントとは

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

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

Note

関連項目のリンクが見つからない場合、 関連するすべてのテレメトリは、左側の一番上一番下のセクションにあります。

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

このビューには 4 つの重要な部分があります。結果リスト、コンポーネント間のトランザクションのグラフ、この操作に関連するすべてのテレメトリの時系列順の一覧、左側で選択されたテレメトリ項目の詳細ウィンドウです。

ビューの 4 つの主要な部分を示すスクリーンショット。

コンポーネント間のトランザクションのグラフ

このグラフでは、タイムラインに要求の継続時間を表す横棒と、コンポーネント間の依存関係が示されます。 また、収集されたすべての例外も、タイムライン上でマークされます。

  1. このグラフの一番上にある行は、エントリ ポイントを表しています。 これは、このトランザクションで呼び出される最初のコンポーネントに対する受信要求です。 継続時間は、トランザクションが完了するまでにかかる合計時間です。
  2. 外部依存関係の呼び出しは、すべてシンプルな折りたたみ不可の行で表され、アイコンは依存関係の種類を表します。
  3. その他のコンポーネントの呼び出しは、折りたたみ可能な行で表されます。 各行は、コンポーネントで呼び出される特定の操作に対応します。
  4. 既定では、選択した要求、依存関係、例外が右側に表示されます。 行を選択すると、その詳細が表示されます。

Note

他のコンポーネントへの呼び出しには 2 行があります。 1 行は、呼び出し元コンポーネントからの送信呼び出し (依存関係) を表します。 もう 1 行は、呼び出されるコンポーネントの受信要求に対応しています。 先頭のアイコンと継続時間バーの個別のスタイルは、これらを区別するのに役立ちます。

この操作 ID のすべてのテレメトリ

このセクションでは、このトランザクションに関連するすべてのテレメトリの時系列順の単純な一覧が表示されます。 トランザクションのグラフに表示されないカスタム イベントとトレースも表示されます。 この一覧をフィルター処理して、特定のコンポーネントまたは呼び出しで生成されたテレメトリのみを表示できます。 この一覧の任意のテレメトリ項目を選択して、対応する詳細を右側に表示できます。

すべてのテレメトリの時系列を示すスクリーンショット。

選択したテレメトリの詳細

この折りたたみ可能なペインには、トランザクション グラフまたは一覧から選択した項目の詳細が表示されます。 [すべて表示] では、収集されたすべての標準属性が一覧表示されます。 カスタム属性は標準セットの下に個別に一覧表示されます。 [呼び出し履歴] トレース ウィンドウの下にある省略記号ボタン (...) を選び、トレースをコピーするオプションを表示します。 [Open profiler traces] (Profiler トレースを開く)[デバッグ スナップショットを開く] を選ぶと、対応する詳細ウィンドウにコード レベルの診断が表示されます。

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

[検索結果]

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

検索結果を示すスクリーンショット。

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

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

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

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

Profiler の統合を示すスクリーンショット。

よく寄せられる質問

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

グラフ上に 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 もリセットされます。

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

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

すべての呼び出しがインストゥルメント化される場合、時間が費やされる根本原因はおそらくプロセスにあります。 プロセスの診断に便利なツールは Application Insights プロファイラです。

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

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