アプリケーションを監視する前に、インストルメント化する必要があります。 以降のセクションでは、 Azure Monitor Application Insights のデータ収集の基本について説明します。
Application Insights で OpenTelemetry (OTel) を使用してアプリケーションをインストルメント化すると、プラットフォーム間で標準化されたテレメトリ収集が可能になります。 これにより、可観測性が向上し、パフォーマンスの監視が簡素化され、分散トレース、メトリック、およびログ分析がサポートされます。
注
Azure Function Apps については、「 Azure Functions で OpenTelemetry を使用する」を参照してください。
Application Insights のインストルメンテーション アプローチ: OpenTelemetry など
基本的なレベルでは、"インストルメント化" は、単純にアプリケーションでテレメトリをキャプチャできるようにすることです。
アプリケーションをインストルメント化する方法には、次の 2 つがあります。
- 自動計装 (オートインストルメンテーション)
- 手動インストルメンテーション
オートインストゥルメンテーションにより、アプリケーションのコードに手を触れずに、構成でテレメトリを収集できます。 便利ですが、構成が少なくなる傾向があります。 また、すべての言語で使用できるわけではありません。 自動計装がサポートされている環境と言語を参照してください。 自動インストルメンテーションを利用できる場合、これは Azure Monitor Application Insights を有効にする最も簡単な方法です。
手動インストルメンテーション は、Application Insights または OpenTelemetry API に対するコーディングです。 ユーザーのコンテキストでは、これは通常、アプリケーションで言語固有の SDK をインストールすることを指します。 つまり、最新バージョンのパッケージへの更新を自分で管理する必要があります。 自動インストルメンテーションで既定ではキャプチャされないカスタム依存関係呼び出しや API 呼び出しを作成する必要がある場合は、このオプションを使用できます。 手動インストルメンテーションには、次の 2 つのオプションがあります。
私たちは OpenTelemetry を将来の方向性と見なしていますが、古い SDK からのデータ収集を停止する計画はありません。 Azure OpenTelemetry Distros が Application Insights SDK と同等の機能に到達する前に、まだ方法があります。 多くの場合、お客様は Application Insights SDK をかなり長い間使用し続けることを選択します。
重要
"手動" は、分散トレースのスパンを定義するための複雑なコードを記述する必要があることを示しているわけではありません (ただし、これはオプションとして残されています)。 Distros にパッケージ化されたインストルメンテーション ライブラリを使用すると、一般的なフレームワークとライブラリ全体でテレメトリ シグナルを簡単にキャプチャできます。 Azure Monitor OpenTelemetry Distro を使用するお客様がこれらのシグナルを利用できるように、 OpenTelemetry を使用して最も人気のある Azure サービス SDK のインストルメント 化に積極的に取り組んでいます。
テレメトリの種類
アプリケーションを観察するために収集されるデータであるテレメトリは、次の 3 つの種類または "重要な要素" に分類できます。
- 分散トレース
- メトリック
- ログ
完全な可観測性のストーリーには、3 つの柱がすべて含まれており、Application Insights では 、データ モデルに基づいてこれらの柱をさらにテーブルに分割します。 Application Insights SDK あるいは Azure Monitor OpenTelemetry Distros には Azure で Application Performance Monitoring を活用するために必要なものすべてが含まれています。 パッケージ自体は無料でインストールでき、Azure Monitor に取り込んだデータに対してのみ料金が発生します。
次のソースでは、3 つの柱について説明します:
- OpenTelemetry コミュニティ Web サイト
- OpenTelemetry の仕様
- シンディ・スリダランによる分散システムの可観測性
テレメトリ ルーティング
Azure Monitor (または、いずれかのベンダー) にデータを送信する方法にも、次の 2 つがあります:
- 直接エクスポーターを使用する
- エージェント経由
直接エクスポーターでは、インプロセス テレメトリを (アプリケーションのコードから) Azure Monitor のインジェスト エンドポイントに直接送信します。 このアプローチの主な利点は、オンボードのシンプルさです。
"現在利用可能な Application Insights SDK と Azure Monitor OpenTelemetry Distros は、ダイレクト エクスポーターに依存しています。"
注
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 には、すべての主要なクラウドおよびアプリケーション パフォーマンス管理 (APM) ベンダーからの貢献が含まれており、 Cloud Native Computing Foundation (CNCF) 内に存在します。 Microsoft は、CNCF プラチナムメンバーです。
用語については、OpenTelemetry 仕様の 用語集 を参照してください。
Application Insights のレガシ用語のいくつかは、業界が OpenTelemetry に集中するので紛らわしくなっています。 これらの違いを次の表に示します。 Application Insights の用語は OpenTelemetry の用語によって置き換えられます。
Application Insights | OpenTelemetry |
---|---|
自動収集装置 | インストルメンテーション ライブラリ |
チャネル | エクスポーター |
コード不要/エージェント ベース | 自動インストルメンテーション |
痕跡 | ログ |
リクエスト | サーバー範囲 |
依存関係 | その他のスパンの種類 (クライアント、内部など) |
操作 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 を参照してください。