Azure Monitor Application Insights のデータ収集の基本
アプリケーションを監視する前に、インストルメント化する必要があります。
以降のセクションでは、Azure Monitor Application Insights のデータ収集の基本のいくつかをカバーします。
インストルメンテーション オプション
基本的なレベルでは、"インストルメント化" は、単純にアプリケーションでテレメトリをキャプチャできるようにすることです。
アプリケーションをインストルメント化する方法には、次の 2 つがあります。
- 自動インストルメンテーション (autoinstrumentation)
- 手動インストルメンテーション
自動インストルメンテーションは、アプリケーションのコードに触れることのない、構成を通じたテレメトリ収集を可能にします。 便利ですが、構成が少なくなる傾向があります。 また、すべての言語で使用できるわけではありません。 「自動インストルメンテーションでサポートされている環境と言語」を参照してください。 自動インストルメンテーションを利用できる場合、これは Azure Monitor Application Insights を有効にする最も簡単な方法です。
手動インストルメンテーションは、Application Insights または OpenTelemetry API に対するコーディングです。 ユーザーのコンテキストでは、これは通常、アプリケーションで言語固有の SDK をインストールすることを指します。 つまり、最新バージョンのパッケージへの更新を自分で管理する必要があります。 自動インストルメンテーションで既定ではキャプチャされないカスタム依存関係呼び出しや API 呼び出しを作成する必要がある場合は、このオプションを使用できます。 手動インストルメンテーションには、次の 2 つのオプションがあります。
私たちは OpenTelemetry を将来の方向性と見なしていますが、古い SDK からのデータ収集を停止する計画はありません。 Azure OpenTelemetry Distros が Application Insights SDK の機能パリティに到達するには、まだなすべきことがある状況です。 多くの場合、お客様は Application Insights SDK をかなり長い間使用し続けることを選択します。
重要
"手動" は、分散トレースのスパンを定義するための複雑なコードを記述する必要があることを示しているわけではありません (ただし、これはオプションとして残されています)。 Distros にパッケージ化されたインストルメンテーション ライブラリを使用すると、一般的なフレームワークとライブラリ全体でテレメトリ シグナルを簡単にキャプチャできます。 私たちは OpenTelemetry を使用した最も人気のある Azure Service SDK のインストルメント化に積極的に取り組んでいるため、Azure Monitor OpenTelemetry Distro を使用するお客様はこれらのシグナルを利用できます。
テレメトリの種類
アプリケーションを観察するために収集されるデータであるテレメトリは、次の 3 つの種類または "重要な要素" に分類できます。
- 分散トレース
- メトリック
- ログ
完全な監視ストーリーには 3 つの柱がすべて含まれており、Application Insights は、これらの柱をデータ モデルに基づいてさらにテーブルに分割します。 Application Insights SDK あるいは Azure Monitor OpenTelemetry Distros には Azure で Application Performance Monitoring を活用するために必要なものすべてが含まれています。 パッケージ自体は無料でインストールでき、Azure Monitor に取り込んだデータに対してのみ料金が発生します。
次のソースでは、3 つの柱について説明します:
テレメトリ ルーティング
Azure Monitor (または、いずれかのベンダー) にデータを送信する方法にも、次の 2 つがあります:
- 直接エクスポーターを使用する
- エージェント経由
直接エクスポーターでは、インプロセス テレメトリを (アプリケーションのコードから) Azure Monitor のインジェスト エンドポイントに直接送信します。 このアプローチの主な利点は、オンボードのシンプルさです。
"現在利用可能な Application Insights SDK と Azure Monitor OpenTelemetry Distros は、ダイレクト エクスポーターに依存しています。"
Note
OpenTelemetry-Collector での Azure Monitor の位置については、「OpenTelemetry」に関する FAQ を参照してください。
ヒント
サンプリングまたは追加のデータ処理に OpenTelemetry-Collector を使用することを検討している場合、Azure Monitor に組み込まれているのと同じ機能を使用できるようになる可能性があります。 ワークスペースベースの Application Insights に移行したお客様は、インジェスト時間の変換の恩恵を受けることができます。 有効にするには、チュートリアルの詳細に従ってください。診断設定を設定する方法を示している手順はスキップします。ワークスペース中心 Application Insights によって、これが既に構成されているためです。 全体のボリュームの 50% 未満をフィルター処理する場合、追加コストは発生しません。 50% を超えた場合、コストが発生しますが、GB あたりの標準料金よりはるかに小さくなります。
OpenTelemetry
Microsoft は、テレメトリ インストルメンテーションの将来として OpenTelemetry を採用できることを嬉しく思っています。 お客様からはベンダー中立のインストルメンテーションが求められてきており、Microsoft は OpenTelemetry コミュニティと提携して、言語間で一貫した API と SDK を作成することに喜びを感じています。
Microsoft は、以前人気のあった 2 つのオープンソース テレメトリ プロジェクト OpenCensus と OpenTracing のプロジェクト利害関係者と連携しました。 一緒に、1 つのプロジェクトである OpenTelemetry の作成を支援しました。 OpenTelemetry は、Cloud Native Computing Foundation (CNCF)内 にあり、すべての主要なクラウド ベンダーと Application Performance Management (APM) ベンダーがこのプロジェクトにコントリビュートしています。 Microsoft は、CNCF プラチナムメンバーです。
用語については、OpenTelemetry の仕様の 用語集 を参照してください。
Application Insights のレガシ用語のいくつかは、業界が OpenTelemetry に集中するので紛らわしくなっています。 これらの違いを次の表に示します。 Application Insights の用語は OpenTelemetry の用語によって置き換えられます。
Application Insights | OpenTelemetry |
---|---|
自動コレクター | インストルメンテーション ライブラリ |
チャネル | エクスポーター |
コード不要/エージェント ベース | 自動インストルメンテーション |
トレース | ログ |
Requests | サーバー スパン |
依存関係 | その他のスパンの種類 (クライアント、内部など) |
操作 ID | トレース ID |
ID または操作の親 ID | スパン ID |
よく寄せられる質問
Application Insights SDK のバージョンとその名前の一覧はどこにありますか?
SDK のバージョンと名前の一覧は、GitHub でホストされています。 詳細については、「SDK バージョン」を参照してください。
次のステップ
次の中から有効化アプローチを選択します。
- 自動インストルメンテーション
- Application Insights SDK
- Azure Monitor OpenTelemetry Distro
詳細については、「Azure Monitor Application Insights の FAQ」と「OpenTelemetry に関する FAQ」を参照してください。