Application Insights を探索する
Application Insights は Azure の アプリケーション パフォーマンス監視 (APM) ソリューションであり、アプリケーションの実行方法と、ユーザーがアプリケーションを操作する方法に関する詳細な分析情報を提供します。 インフラストラクチャの監視 (前のユニットで説明) とは異なり、Application Insights では 、アプリケーション レベルのテレメトリ (要求、依存関係、例外、カスタム ビジネス イベント) に重点を置いています。
Application Insights のしくみ
インストールとセットアップ
小規模な インストルメンテーション パッケージ をアプリケーションにインストールし、Microsoft Azure portal で Application Insights リソースを設定します。 セットアップ プロセスはプラットフォームによって異なりますが、一般的には次のものが含まれます。
1. Application Insights リソースを作成します。
- Azure portal に移動し、Application Insights リソースを作成する
- インストルメンテーション キーまたは接続文字列を取得する
- リソースはスタンドアロンにすることも、Log Analytics ワークスペースにリンクすることもできます
2. アプリケーションにインストルメンテーションを追加します。
- プラットフォーム用の Application Insights SDK をインストールする (.NET、Java、Node.js、Python)
- アプリケーションでインストルメンテーション キーを構成する
- 必要に応じて、高度な機能 (プロファイリング、スナップショット デバッグ) を有効にする
3. インストルメント化されたアプリケーションをデプロイする:
- インストルメンテーションはアプリを監視し、テレメトリ データをポータルに送信します
- アプリケーションは任意の場所で実行できます。Azure でホストする必要はありません
- オンプレミスのアプリケーション、他のクラウド プロバイダー、エッジ デバイスと連携する
インストルメント化されるもの
複数のアプリケーション コンポーネントをインストルメント化して、完全な可視性を実現できます。
Web サービス アプリケーション:
- ASP.NET、ASP.NET Core、Java Spring Boot、Node.js Express アプリケーション
- 要求、応答時間、例外を自動的にキャプチャする
- 依存関係 (データベース呼び出し、外部 API、メッセージ キュー) を追跡します。
バックグラウンド コンポーネント:
- Azure Functions、WebJobs、Worker Services
- コンソール アプリケーションとバッチ プロセス
- スケジュールされたタスクとバックグラウンド仕事
Web ページの JavaScript:
- クライアント側 SDK がユーザー ブラウザーで実行される
- ページ ビュー、AJAX 呼び出し、ブラウザーの例外を追跡します
- クライアント側のパフォーマンスを測定します (ページの読み込み時間、レンダリング)
- シングルページ アプリケーションを監視します (React、Angular、Vue)
包括的なテレメトリ収集
Application Insights には、完全な監視のために 複数のテレメトリ ソース が用意されています。
ホスト環境の統合:
- パフォーマンス カウンター、Azure 診断、Docker ログなどの ホスト環境 からテレメトリをプルする
- インフラストラクチャ メトリックをアプリケーションのパフォーマンスと関連付ける
- 問題がアプリケーション レベルかインフラストラクチャ レベルか
合成監視:
- Web テストを定期的に設定し、合成要求を Web サービスに送信する
- 複数のグローバルな場所からの可用性を監視する
- 複数ステップのユーザー シナリオを検証する
- エンドポイントが使用できなくなった場合にアラートを生成する
統合分析:
- これらのテレメトリ ストリームはすべて Azure portal に統合されます
- 生データに強力な 分析ツールと検索ツール を適用する
- KQL を使用してすべてのテレメトリの種類に対してクエリを実行する
- 操作 ID を使用してさまざまなソースからのイベントを関連付ける
オーバーヘッドはどの程度ですか?
アプリのパフォーマンスへの影響は最小限です。 Application Insights は、ごくわずかなパフォーマンス コストで運用環境で使用できるように設計されています。
パフォーマンス特性:
- 呼び出しの追跡は非ブロッキングです。 テレメトリ収集による要求処理の速度が低下しない
- バッチ送信: イベントはバッチ処理され、別のスレッドで送信されます
- 非同期操作: テレメトリの送信を待機しない
- アダプティブ サンプリング: 統計精度を維持しながらデータ量を自動的に削減
- 一般的なオーバーヘッド:<1% CPU への影響、インスタンスあたり最大 50 ~ 100 KB/秒のネットワーク
サンプリング戦略:
- 固定レート サンプリング: すべてのテレメトリの割合を収集します (例: 20%)
- アダプティブ サンプリング: トラフィック量に基づいて自動的に調整する
- インジェスト サンプリング: 格納されているデータを減らすために Azure portal で適用
- サンプリングはコンテキストを保持します。 関連するテレメトリをまとめてサンプリングする
Application Insights は何を監視しますか?
Application Insights は、アプリのパフォーマンスと使用方法を理解するのに役立つ 開発チームを対象としています 。 これは、複数のディメンションにわたる包括的な監視を提供します。
アプリケーションのパフォーマンス メトリック
要求率、応答時間、および失敗率:
- 最も人気のあるページ、時間帯、ユーザーが配置されている場所を確認する
- 最適なパフォーマンスを発揮するページと最適化が必要なページを確認する
- 主要な分析情報: より多くの要求で応答時間と失敗率が増加する場合は、リソースまたは容量の問題が発生している可能性があります
依存関係率、応答時間、および失敗率:
- データベース、外部 API、メッセージ キュー、ストレージへの呼び出しを追跡する
- 外部サービスによって速度が低下しているかどうかを確認する
- ユーザー エクスペリエンスに影響を与える最も遅い依存関係を特定する
- ダウンストリーム サービスからのカスケード エラーを検出する
エラーと例外の追跡
例外:
- 時間の経過に伴う例外の傾向を示す集計統計を分析する
- 特定のインスタンスを選択し、完全なスタック トレースにドリルダウンする
- 例外が発生したときのコンテキストを理解するための関連する要求を参照する
- サーバーとブラウザーの両方の例外 が報告され、完全な可視性が得られます
- ハンドルされない例外と処理された例外を追跡する
クライアント側の監視
ページビューと読み込みパフォーマンス:
- 実際のエクスペリエンスを示すユーザーのブラウザーによって報告される
- Time to Interactive (TTI)、First Contentful Paint (FCP) の測定
- ユーザー エクスペリエンスに影響するページの読み込みが遅いページを特定する
Web ページからの AJAX 呼び出し:
- API 呼び出しのレート、応答時間、および失敗率を追跡する
- クライアントの観点から遅い API エンドポイントを特定する
- シングルページ アプリケーション (SPA) ナビゲーションの監視
ユーザー分析
ユーザーとセッションの数:
- 毎日/毎月のアクティブ ユーザーを追跡する (DAU/MAU)
- セッションの期間と頻度について
- ユーザーのリテンション期間とチャーンを測定する
インフラストラクチャの統合
パフォーマンス カウンター:
- Windows または Linux サーバー マシンから収集する
- CPU、メモリ、ネットワーク使用量を含める
- インフラストラクチャ メトリックをアプリケーションのパフォーマンスと関連付ける
ホスト診断:
- Docker コンテナーと Azure リソースを監視する
- コンテナーごとのリソース使用率を追跡する
- アプリケーションの正常性と共にインフラストラクチャの正常性を理解する
診断機能
診断トレース ログ:
- アプリケーション フレームワーク (ILogger、Log4j など) からログをキャプチャする
- 操作 ID を使用してトレース イベントと要求を関連付ける
- ログで特定のエラーまたはパターンを検索する
- 重大度レベル、時間範囲、またはカスタム プロパティでフィルター処理する
カスタム ビジネス テレメトリ
カスタム イベントとメトリック:
- クライアントまたはサーバー コードでカスタム テレメトリを記述する
- 販売されたアイテム、獲得したゲーム、作成されたサブスクリプションなどのビジネス イベントを追跡する
- カートの値、コンバージョン ファネルの手順など、ビジネス固有のメトリックを測定する
- セグメント化用のカスタム ディメンションを作成する (顧客層、機能フラグ)
テレメトリはどこで表示されますか?
Application Insights には、さまざまなシナリオに合わせて最適化された、データを探索するための 複数のインターフェイス が用意されています。 データを探索する方法は多数あります。
スマート検出とアラート
スマート検出と手動アラートにより、問題の 事前通知が提供されます。
自動アラートは 、アプリの通常のテレメトリ パターンに適応し、通常のパターンの外にある場合にトリガーされます。 機械学習アルゴリズムでは、次の情報が識別されます。
- 故障率の異常な上昇: 例外または失敗した要求の急激な急増
- パフォーマンスの低下: 応答時間が一般的なパターンよりも遅い
- メモリ リーク: 時間の経過に伴う段階的なメモリの増加
- 依存関係の異常: 異常な動作を示す外部サービス呼び出し
また、構成可能なしきい値、重大度レベル、およびアクション グループを使用して、カスタムメトリックまたは標準メトリックのレベルに 手動アラートを設定 することもできます。
アプリケーション マップ
主要なメトリックとアラート を使用して、アプリのコンポーネント を視覚化します。 アプリケーション マップは自動的に次を検出します。
- アプリケーション トポロジ: すべてのコンポーネントとその接続
- 依存関係: どのサービスがどの依存関係を呼び出すか
- 正常性インジケーター: コンポーネントごとの色分けされた正常性状態
- 主要なメトリック: 要求率、失敗率、コンポーネントごとの応答時間
- アクティブなアラート: 問題のあるコンポーネントを示す視覚的なインジケーター
ユース ケース: 分散システムで障害が発生しているコンポーネントをすばやく特定し、呼び出しパターンを理解し、サービスごとの容量を計画します。
Application Insights Profiler
サンプリングされた要求の実行プロファイルを調べて、パフォーマンスのボトルネックを特定します。
- コード レベルのパフォーマンス: 最も時間を消費するメソッドを正確に確認する
- コール ツリーの視覚化: コードの実行パスを理解する
- サンプリングされたプロファイル: 運用環境からの低オーバーヘッドの収集
- 炎グラフ: 各関数で費やされた時間の視覚的表現
ユース ケース: 低速なデータベース クエリ、非効率的なアルゴリズム、過剰な文字列割り当て、ロックの競合を特定します。
使用状況分析
ユーザーのセグメント化と保持を分析 して、ユーザーがアプリケーションと対話する方法を理解します。
- ユーザー フロー: アプリケーションを介してナビゲーション パスを視覚化する
- ファネル: マルチステッププロセスを通じてコンバージョン率を追跡する
- コホート: ユーザーを動作または属性別にグループ化して比較する
- 保持: 時間の経過とともにユーザーが戻ってくる割合を測定する
- 影響分析: パフォーマンスとユーザーの動作を関連付ける
ユース ケース: コンバージョン ファネルの最適化、機能の導入の理解、危険なユーザーの特定、製品市場の適合度の測定を行います。
診断検索
詳細な調査のためにイベントを検索およびフィルター処理します。
- イベントの種類: 要求、例外、依存関係呼び出し、ログ トレース、ページ ビュー、カスタム イベント
- フィルタリング: 時間範囲、結果コード、操作名、カスタム プロパティ
- フルテキスト検索: 特定のテキストを含むイベントを検索する
- 関連するテレメトリ: イベントをクリックすると、関連するすべてのテレメトリ (エンドツーエンドのトランザクション) が表示されます
ユース ケース: 特定のユーザーから報告された問題を調査し、特定の顧客のエラーを見つけ、分散システム間で要求をトレースします。
メトリックス エクスプローラー
集計データの探索、フィルター処理、セグメント化:
- メトリック: 要求、失敗、例外、応答時間、ページ読み込み時間、カスタム メトリックの割合
- 分割: ディメンション別のセグメント化 (クラウド ロール、地域、ブラウザー、デバイス)
- フィルタリング: 特定の値に注目する
- 集合体: 最小、最大、平均、合計、パーセンタイル
- 時間粒度: 1 分から 1 か月のバケット
ユース ケース: 容量計画、SLA 追跡、リージョン間のパフォーマンスの比較、傾向の特定。
ダッシュボード
複数のリソースのデータをマッシュアップし、他のユーザーと共有します。
- 複数リソース: 複数の Application Insights インスタンスのデータを結合する
- カスタマイズ可能なタイル: クエリ、メトリック、視覚化をピン留めする
- 共有ダッシュボード: 共同作業の監視のためにチームに公開する
- 連続表示: マルチコンポーネント アプリケーションやチーム ルームに最適
ユースケース: エグゼクティブダッシュボード、インシデント対応室、チームの状況把握、ステータス表示。
Live Metrics Stream
ほぼリアルタイムの業績評価指標を見る:
- 1 秒の更新: メトリックの更新をリアルタイムで確認する
- デプロイの検証: 新しいビルドをデプロイするときに、すべてが期待どおりに動作することを確認します
- ライブ イベント: 要求、依存関係、例外が発生した場合のストリーム
- サーバーの正常性: サーバー数、CPU、メモリのライブ ビュー
- フィルタリング: 特定のサーバーまたは障害の種類に重点を置く
ユース ケース: デプロイの検証、ライブ トラブルシューティング、ロード テストの観察、インシデント対応。
分析 (KQL クエリ)
この強力なクエリ言語を使用して、アプリのパフォーマンスと使用状況に関する難しい質問に答えます。
- KQL (Kusto クエリ言語): 前のユニットで説明したのと同じ言語
- アドホック分析: 定義済みのビューを使用せずにデータを探索する
- 複雑な結合: 複数のテーブル間でデータを関連付ける
- 高度な視覚化: カスタム グラフと時系列を作成する
- 保存されたクエリ: 一般的な分析パターンを再利用する
ユース ケース: 根本原因分析、容量計画、カスタム レポート、データ探索。
Visual Studio の統合
コード内のパフォーマンス データを確認します。
- CodeLens: コード エディターにインラインで表示されるパフォーマンス メトリック
- スタック トレースからコードに移動します。 ポータルで例外をクリックし、コード行にジャンプする
- ローカル デバッグ: Visual Studio デバッガーでの Application Insights の統合
- 動向: 特定のメソッドのパフォーマンス傾向の履歴
ユース ケース: 開発中のパフォーマンスの最適化。運用環境の問題をローカルでデバッグします。
スナップショット デバッガー
ライブ操作からサンプリングされたデバッグ スナップショット:
- 運用環境のデバッグ: 運用環境から完全なメモリ スナップショットをキャプチャする
- パラメーター値: 例外時にローカル変数とパラメーターを表示する
- 呼び出し履歴: 各フレームで変数値を持つ完全なスタック トレース
- パフォーマンスに影響はありません。 最小限のオーバーヘッドで収集されたスナップショット
- プライバシーコントロール: キャプチャするデータを構成する
ユース ケース: 再現が困難な運用環境の問題をデバッグし、お客様の環境での例外を理解します。
Power BI 統合
使用状況メトリックを他のビジネス インテリジェンスと統合します。
- カスタム レポート: Application Insights とビジネス データを組み合わせた Power BI ダッシュボードを作成する
- スケジュールされた更新: データの自動更新
- 相関: 技術的なメトリックをビジネス成果にリンクする
- エグゼクティブ レポート: ビジネス コンテキストで技術データを提示する
ユース ケース: ボード レベルのレポート、アプリケーションのパフォーマンスと収益の関連付け、SLA コンプライアンス レポート。
REST API
メトリックと生データに対してクエリを実行するコードを記述します。
- プログラムによるアクセス: 独自のアプリケーションから Application Insights にクエリを実行する
- オートメーション: カスタム監視ソリューションを構築する
- 統合: サード パーティ製のツールとワークフローに接続する
- カスタム処理: 高度な分析のためにデータをエクスポートする
ユース ケース: カスタム ダッシュボード、SLA 監視システム、自動レポート、データ サイエンス パイプライン。
連続エクスポート
到着するとすぐに生データをストレージに一括エクスポートします。
- Azure Storage: 長期保有のために Blob Storage にエクスポートする
- Event Hubs: リアルタイム処理システムへのストリーム配信
- Data Lake: ビッグ データ分析プラットフォームとの統合
- コンプライアンス: データ所在地とリテンション期間の要件を満たす
- コストの最適化: 低コストのストレージ層にデータを格納する
ユース ケース: 長期アーカイブ、データ ウェアハウスのフィード、コンプライアンス要件、大規模なカスタム分析。