🙌

Application Insightsの監視系の機能について

2024/01/15に公開

はじめに

Application Insightsのことを知った気になっていたので、各機能(特に監視系)がどういったことができるのか整理した。

Application Insightsとは

監視・分析系のサービスの1つ。基盤レイヤよりはアプリレイヤにおいて、監視・分析情報の収集や可視化を実施する。
例えば、リアルタイムでのリクエスト数やそれに対しての処理時間、ユーザの画面遷移の流れなど、性能系やユーザ分析に必要な情報が確認できる。

「クラシック」「Log Analytics Workspaceベース」のApplication Insightsが存在する。前者は旧バージョンくらいのイメージ。後者はテレメトリがワークスペースに取り込まれることで、アプリ間を超えたログの統合管理とLog Analyticsの機能アクセスが可能になる。
アプリケーションにSDKを導入することで、アプリのログを自動的に収集することが可能になる。

例えば、AppDependenciesというテーブルがワークスペース上に作成される。このデータはアプリケーションによって呼び出される外部コンポーネントの呼び出しステータスや時間を記録しており、「アプリケーションマップ」や「ユーザフロー」でよりユーザライクに可視化されて表示される。

Azure Monitor Agentを導入することで同じようにログを収集することもできる。ただし、当該サービスは仮想マシンのイベントログなどインフラレイヤのログを収集する時の使用が一般的である。

監視系の機能について

自身がインフラ系のため、監視系の機能について記載する。
提供される機能と概要は下記の通り。

  • マート検出
    送信されたテレメトリを機械学習でプロアクティブ分析して、アプリケーションのパフォーマンスの問題(例:応答時間の低下)、障害(リクエストの失敗)発生率が急激に上昇したなど異常の警告を通知が可能。
    https://learn.microsoft.com/ja-jp/azure/azure-monitor/alerts/proactive-diagnostics

  • ライブメトリック
    ライブメトリック

各項目の定義は以下で確認できる。例えば、Requests Rateであれば、WEBサーバにて受信したリクエストの数を表す。

https://learn.microsoft.com/ja-jp/azure/azure-monitor/app/standard-metrics

  • トランザクションの検索
    テレメトリと呼ばれる「イベントデータ」「パフォーマンスデータ(レスポンス時間など)」「トレースデータ(トランザクションや操作履歴)」「アプリケーションログ」が確認できる。
    テレメトリのカテゴリによって件数の集約や色によるカテゴリ分けがされており分かりやすい。

https://learn.microsoft.com/ja-jp/azure/azure-monitor/app/transaction-search-and-diagnostics?tabs=transaction-search

  • 可用性テスト
    デプロイしたアプリの特定のURLに対してテストを実施、レスポンス(ステータス)の正常性の確認や応答時間のチェックを実施できる。
    Portal上は「クラシックテスト」「標準テスト」が存在するが、「標準テスト」を選択しておけば問題なし。

画面上では以下のようにテストが作成できる。
可用性テスト

対象のURLをベースにして、証明書の有効性のチェックや、リクエストメソッドの選択、テストの成功条件(ステータスだけでなくタイムアウト値の確認までできる)が設定項目として存在する。
作成後の可用性テストを確認すると、成功or失敗が確認できる。
可用性テスト結果

https://learn.microsoft.com/ja-jp/azure/azure-monitor/app/availability-standard-tests

なお、App Serviceがパブリック公開されていない場合はプライベートなテストを実施する必要がある。
https://jpazmon-integ.github.io/blog/applicationInsights/aboutPrivateAvailabilityTest/
https://jpazmon-integ.github.io/blog/applicationInsights/privateAvailabilityTestSampleCode/

  • 障害(英語だとfailure表記)
    失敗したリクエストの数や失敗率が確認できる。サーバの可用性には問題ないが、利用者が存在しないパスにアクセスした際にも表記されると思う。
    そのため、必ずしもアラートを上げる必要は無いが分析の一助となる情報が確認できる。

画像は存在しないパス(/hello.jsp)にアクセスした後のキャプチャ画面。失敗として記録されているが、このパスが存在しないことは明示なのでアラートでの問題視はしない。

障害

  • パフォーマンス
    リクエストの応答時間が確認できる。
    パフォーマンス

平均での応答時間が初期表示されているが、クリックすることで各リクエストがどれくらいの処理時間かが分布が確認できる。
応答時間の分布

  • 診断設定
    これまでの各種機能で可視化するための生データをLog Analyticsなど別サービスに転送できる。

Discussion