"依存関係" は、アプリケーションによって呼び出される外部コンポーネントです。 一般的には、HTTP を使用して呼び出されるサービス、またはデータベース、あるいはファイル システムです。 Application Insights は、 依存関係呼び出しの期間と失敗したかどうかを測定し、依存関係の名前などの情報を収集します。 特定の依存関係呼び出しを調査し、要求や例外に関連付けることができます。
自動追跡された依存関係
このセクションでは、アプリケーションのコードに追加の変更を加えずに依存関係として自動的に検出される依存関係呼び出しの一覧にリンクします。 これらの依存関係は、Application Insights の [アプリケーション マップ] ビューと [トランザクション診断] ビューで視覚化されます。
依存関係が一覧にない場合でも、手動で追跡できます。 「依存関係を手動で追跡する」を参照してください。
自動収集されたすべての依存関係の一覧については、「 .NET、Java、Node.js、Python アプリケーションの Azure Monitor OpenTelemetry の追加と変更」の言語固有のタブを参照してください。
自動依存関係監視のしくみは?
依存関係は、テレメトリの収集方法に応じて、次のいずれかの手法を使用して自動的に収集されます。
OpenTelemetry インストルメンテーション ライブラリ は、HTTP、SQL、Azure SDK 呼び出しなどの依存関係を自動的に収集するために使用されます。 これらのライブラリは、
DiagnosticSource
または同等のメカニズムを使用して、サポートされているフレームワークとクライアント ライブラリにフックされます。Azure App Services などのサポートされている環境では、自動侵入が使用でき、既定で有効になり、コードを変更せずに実行時にテレメトリ コレクターが挿入されます。
他の環境では、開発者は 、Azure.Monitor.OpenTelemetry.* パッケージと OpenTelemetry API を使用してインストルメンテーションを手動で構成して、追跡する依存関係と、それらがどのようにエンリッチまたはフィルター処理されるかを制御できます。
依存関係を手動で追跡する
自動コレクションがニーズを満たしていない場合は、依存関係を手動で追跡できます。
ヒント
新しいプロジェクトでは、柔軟性と将来の互換性を向上させるために OpenTelemetry を使用することをお勧めします。
依存関係を手動で追跡する方法については、「 .NET、Java、Node.js、Python アプリケーション用の Azure Monitor OpenTelemetry を追加および変更する」を参照してください。
依存関係データが見つかる場所
Application Insights の次のツールとビューを使用すると、依存関係テレメトリを簡単に調査および分析できます。
見解 | 説明 |
---|---|
アプリケーション マップ | アプリケーションの依存関係と外部サービスとの関係を視覚的に表現します。 |
トランザクションの診断 | エンド ツー エンドのトランザクションの詳細を表示し、サーバー側の操作と依存関係の呼び出しを関連付けます。 |
ブラウザー タブが 失敗とパフォーマンス ビューにあります | クライアント ブラウザーからの AJAX 呼び出しを強調表示します。 |
失敗とパフォーマンス ビューのサーバー タブ | 低速または失敗したサーバー要求をドリルダウンし、関連する依存関係呼び出しを検査できます。 要求から依存関係へのトレースと、失敗した依存関係の呼び出しに関連付けられている失敗した要求の例を参照してください。 |
Azure Monitor ログ | 依存関係テレメトリに対する高度なクエリと分析を有効にします。 KQL を使用して依存関係を追跡する例を参照してください。 |
遅い要求を診断する
各要求イベントは、依存関係呼び出し、例外、および要求の処理中に追跡されるその他のイベントに関連しています。 そのため、いくつかのリクエストが正しく実行されない場合は、それが依存関係からの応答が遅いためかどうかを調べることができます。
要求から依存関係へのトレース
左側の [パフォーマンス] タブを選択し、上部にある [依存関係] タブを選択します。
[全体] の下の [依存関係名] を選択します。 依存関係を選択すると、その依存関係の期間の分布グラフが表示されます。
右下にある [サンプル] ボタンを選択します。 次に、サンプルを選択して、エンドツーエンドのトランザクション詳細を表示します。
ライブ サイトのプロファイリング
.NET Profiler は、ライブ サイトへの HTTP 呼び出しをトレースし、コード内の関数のうち最も時間がかかったものを示します。
失敗した要求
失敗した要求も、依存関係への失敗した呼び出しに関連している可能性があります。
左側の [失敗] タブを選択し、上部の [依存関係] タブを選択します。
ここで、失敗した依存関係の数を確認できます。 失敗した依存関係に関する詳細を取得するには、下の表で [依存関係名] を選択します。 右下の青色の [依存関係] ボタンを選択すると、エンドツーエンドのトランザクションの詳細を取得できます。
ログ (Analytics)
依存関係は Kusto クエリ言語で追跡できます。 いくつかの例を次に示します。
失敗した依存関係の呼び出しを見つけます。
dependencies | where success != "True" | take 10
AJAX の呼び出しを見つけます。
dependencies | where client_Type == "Browser" | take 10
要求に関連する依存関係の呼び出しを見つけます。
dependencies | where timestamp > ago(1d) and client_Type != "Browser" | join (requests | where timestamp > ago(1d)) on operation_Id
ページビューに関連するAJAXコールを見つける。
dependencies | where timestamp > ago(1d) and client_Type == "Browser" | join (browserTimings | where timestamp > ago(1d)) on operation_Id
オープンソース SDK
あらゆる Application Insights SDK と同様に、依存関係収集モジュールもオープンソースです。 コードの閲覧、投稿、問題のレポートは公式の GitHub リポジトリで行ってください。