ログベースのメトリックを検出する
Application Insights ログベースのメトリックを使用すると、監視対象アプリの正常性の分析、強力なダッシュボードの作成、アラートの構成を行うことができます。 次の 2 種類のメトリックがあります。
- バック グラウンドのログベースのメトリックは、格納されているイベントから Kusto クエリに変換されます。
- 標準メトリックは、事前に集計された時系列として格納されます。
標準メトリックは収集中に事前に集計されるため、クエリ時のパフォーマンスが優れています。 ダッシュボードやリアルタイム アラートには標準のメトリクスが推奨されます。 ログベースのメトリックには、より多くのディメンションがあるため、データ分析やアドホック診断のための優れたオプションとなります。 名前空間セレクターを使用して、メトリックス エクスプローラーでログベースのメトリックと標準メトリックを切り替えます。
ログベースのメトリック
開発者は SDK を使用し、(SDK を明示的に呼び出すコードを記述することで) イベントを手動で送信することも、自動インストルメンテーションからのイベントの自動収集を利用することもできます。 いずれの場合も、収集されたすべてのイベントが Application Insights バックエンドでログとして格納され、Azure portal の Application Insights ブレードは、ログからのイベントベースのデータを視覚化するための分析および診断ツールとして動作します。
ログを使用してイベントの完全なセットを保持することで、優れた分析および診断の値が得られます。 たとえば、特定の URL に対する要求の正確な数と、これらの呼び出しを行った個別のユーザーの数を取得できます。 また、任意のユーザー セッションの例外や依存関係呼び出しを含む、詳細な診断トレースを取得できます。 この種の情報があれば、アプリケーションの正常性や使用状況をより詳細に把握でき、アプリに関する問題の診断に必要な時間を短縮できます。
それと同時に、イベントの完全なセットを収集することは、大量のテレメトリを生成するアプリケーションには実用的でない (または不可能である) 場合があります。 イベントの量が多くなりすぎたら、Application Insights では、収集されて格納されたイベントの数を減らすためのサンプリングやフィルター処理など、テレメトリ量の削減手法がいくつか適用されます。 残念ながら、格納イベントの数を減らすと、ログに格納されるイベントのクエリ時間集計をバックグラウンドで行う必要があるメトリックの精度も下がります。
事前に集計されたメトリック
事前に集計されたメトリックは、たくさんのプロパティを持つ個々のイベントとしては保存されません。 代わりに、事前に集計された時系列として格納され、主なディメンションのみが含まれます。 これにより、新しいメトリックはクエリ時に適したものとなります。データの取得スピードが速くなり、必要となるコンピューティング能力が減ります。 そして、メトリックのディメンションに関するほぼリアルタイムのアラートや応答性の高いダッシュボードなど、新しいシナリオが可能になります。
重要
Application Insights では、ログベースのメトリックと事前に集計されたメトリックの両方が共存します。 2 つを区別するため、Application Insights UX では、事前に集計されたメトリックを "標準メトリック (プレビュー)" と呼ぶようになり、イベントからの従来のメトリックは "ログベースのメトリック" という名前に変更されました。
新しい SDK (.NET 用の Application Insights 2.7 SDK 以降) では、収集時にメトリックが事前に集計されます。 これは、既定で送信される標準メトリックに適用されるため、正確性がサンプリングやフィルター処理の影響を受けることはありません。 また、GetMetric を使用して送信されるカスタム メトリックにも適用されるため、データ インジェストが減り、コストが削減されます。
事前に集計しない SDK の場合、Application Insights バックエンドでは引き続き、Application Insights イベント収集エンドポイントによって受信されるイベントを集計することで新しいメトリックが設定されます。 ネットワーク経由で送信されるデータの量を減らせる利点はありませんが、引き続き事前に集計されたメトリックを使用できて、収集時にメトリックを事前に集計しない SDK でのほぼリアルタイムのディメンション アラートのパフォーマンスとサポートが向上します。
ここで大切なことに触れておきますが、インジェスト サンプリングの前に収集エンドポイントでイベントが事前に集計されます。つまり、アプリケーションで使用する SDK のバージョンに関係なく、インジェスト サンプリングが事前に集計されたメトリックの精度に影響することはありません。