このドキュメントでは、OpenTelemetry (OTel) と Azure Monitor Application Insights for .NET、Java、Node.js、Python アプリケーションの統合に関連するサポート、サポート チャネル、フィードバック メカニズムに関する利用可能なリソースについて説明します。
注
Azure Function Apps については、「 Azure Functions で OpenTelemetry を使用する」を参照してください。
よく寄せられる質問
OpenTelemetry とは何ですか?
監視のための新しいオープンソース標準です。 詳細については、「OpenTelemetry」を参照してください。
Microsoft Azure Monitor が OpenTelemetry に投資しているのはなぜですか?
Microsoft は次の理由から OpenTelemetry への投資を行っています。
- ベンダーに依存せず、複数の言語にわたって一貫した API/SDK を提供する。
- 時間の経過とともに、Microsoft は、OpenTelemetry によって、Azure Monitor のお客様がサポートされている言語以外の言語で記述されたアプリケーションを監視できるようになると考えるようになりました。
- インストルメンテーション ライブラリのリッチなセットを通じて、利用者が収集できるデータの種類を拡大する。
- OpenTelemetry ソフトウェア開発キット (SDK) は、先行製品である Application Insights SDK よりも大部分で良いパフォーマンスを示す傾向がある。
- OpenTelemetry はオープンソースを推進するという Microsoft の戦略に沿うものである。
OpenTelemetry はどのような状況ですか?
OpenTelemetry の状態を参照してください。
Azure Monitor OpenTelemetry Distro とは
これは、Azure で最上級のエクスペリエンスが得られるように、すべての OpenTelemetry コンポーネントをバンドルするシン ラッパーと考えることができます。 このラッパーは、OpenTelemetry のディストリビューションとも呼ばれます。
Azure Monitor OpenTelemetry Distro を使用する必要がある理由
コミュニティのネイティブ OpenTelemetry よりも Azure Monitor OpenTelemetry Distro を使用することには、いくつかの利点があります。
- 有効化作業を減らす
- Microsoft によってサポートされている
- 次のような Azure 固有の機能が導入されます。
- 従来の Application Insights SDK と互換性のあるサンプリング
- Microsoft Entra 認証
- オフライン ストレージと自動再試行
- Statsbeat
- Application Insights 標準メトリック
- さまざまな Azure 環境でクラウド ロール名とクラウド ロール インスタンスを自動入力するためのリソース メタデータを検出する
- ライブ メトリック
OpenTelemetry の精神に基づいて、ディストリビューションはオープンで拡張できるように設計されています。 たとえば、次のようなものを追加できます。
- OpenTelemetry Protocol (OTLP) エクスポーターと 2 番目の宛先に同時に送信する
- ディストリビューションに含まれていない他のインストルメンテーション ライブラリ
このディストリビューションは OpenTelemetry ディストリビューションを提供しているため、このディストリビューションは OpenTelemetry でサポートされているものすべてをサポートしています。 たとえば、OpenTelemetry でサポートされている場合は、テレメトリ プロセッサ、エクスポーター、インストルメンテーション ライブラリをさらに追加できます。
注
このディストリビューションは、サンプラーを Application Insights のカスタムの固定レート サンプラーに設定します。 これを別のサンプラーに変更できますが、変更した場合、このディストリビューションに含まれる機能の一部が無効になる可能性があります。 サポートされているサンプラーの詳細については、「Azure Monitor OpenTelemetry を構成する」の「サンプリングの有効化」セクションを参照してください。
サポートされているスタンドアロンの OpenTelemetry エクスポーターがない言語の場合、Azure Monitor OpenTelemetry Distro が、Azure Monitor で OpenTelemetry を使用するための現在サポートされている唯一の方法です。 スタンドアロンの OpenTelemetry エクスポーターがサポートされている言語では、テレメトリ シナリオに応じて、Azure Monitor OpenTelemetry Distro または適切なスタンドアロンの OpenTelemetry エクスポーターのいずれかを使用できます。 詳細については、「どのようなときに Azure Monitor OpenTelemetry エクスポーターを使う必要がありますか?」を参照してください。
Azure Monitor OpenTelemetry Distro をテストするにはどうすればよいですか?
.NET、Java、JavaScript (Node.js)、Python に関する Microsoft 提供のドキュメントを確認してください。
OpenTelemetry または Application Insights SDK を使用する必要がありますか?
新しいプロジェクトの 機能 が監視ニーズに合っている場合は、Azure Monitor OpenTelemetry Distro を使用することをお勧めします。 OpenTelemetry は、クロスプラットフォームの可観測性を強化し、テレメトリ収集に標準化されたアプローチを提供する業界標準のフレームワークです。
ただし、Application Insights SDK には、OpenTelemetry でまだ完全に自動化されていない次のような特定の機能が引き続き用意されています。
- 依存関係の自動追跡 – OpenTelemetry では依存関係の追跡がサポートされていますが、Application Insights SDK で使用できる自動追跡と比較して追加の構成が必要な依存関係もあります。
AvailabilityTelemetry
やPageViewTelemetry
などのカスタム テレメトリの種類 - OpenTelemetry には直接的な同等物はありません。 同様の機能は、手動インストルメンテーションを使用して実装できます。- テレメトリ プロセッサと初期化子 – OpenTelemetry にはプロセッサとスパン プロセッサがありますが、すべてのシナリオで Application Insights テレメトリ プロセッサと初期化子を完全に置き換えるわけではありません。
- 拡張メトリック収集 – OpenTelemetry には強力なメトリック システムが用意されていますが、Application Insights SDK の組み込みメトリックの中には、OpenTelemetry での手動セットアップが必要なものもあります。
OpenTelemetry には、Application Insights SDK よりも次のような利点もあります。
- プラットフォーム間の標準化の向上
- インストルメンテーション ライブラリの広範なエコシステム
- データ収集と処理の柔軟性の向上
- Azure Monitor OpenTelemetry Distro は引き続き Azure 用に最適化されていますが、ベンダーの中立性が向上しました。
Azure Monitor の OpenTelemetry 統合は継続的に進化しており、Microsoft はその機能を引き続き強化しています。 移行を検討している場合は、OpenTelemetry が現在観測性の要件を満たしているかどうか、または Application Insights SDK がニーズに適しているかどうかを慎重に評価します。
どのようなときに Azure Monitor OpenTelemetry エクスポーターを使う必要がありますか?
ASP.NET Core、Java、Node.js、Python では、Azure Monitor OpenTelemetry Distro の使用をお勧めします。 1 行のコードで始められます。
他のすべての .NET シナリオ (従来の ASP.NET、コンソール アプリ、Windows フォーム (WinForms) など) では、.NET Azure Monitor OpenTelemetry エクスポーター (Azure.Monitor.OpenTelemetry.Exporter
) の使用をお勧めします。
高度な構成を必要とするより複雑な Python テレメトリ シナリオでは、Python Azure Monitor OpenTelemetry エクスポーターの使用をお勧めします。
Azure Monitor OpenTelemetry Distro 内の機能は、現在どのようなリリース状態ですか?
次のグラフは、各言語に対する OpenTelemetry 機能のサポートを示しています。
機能 | .NET | Node.js | Python(プログラミング言語) | ジャワ |
---|---|---|---|---|
分散トレース | ✅ | ✅ | ✅ | ✅ |
カスタム メトリック | ✅ | ✅ | ✅ | ✅ |
標準メトリック | ✅ | ✅ | ✅ | ✅ |
固定レート サンプリング | ✅ | ✅ | ✅ | ✅ |
オフライン ストレージと自動再試行 | ✅ | ✅ | ✅ | ✅ |
例外のレポート | ✅ | ✅ | ✅ | ✅ |
ログの収集 | ✅ | ⚠️ | ✅ | ✅ |
[カスタム イベント] | ⚠️ | ⚠️ | ⚠️ | ✅ |
Microsoft Entra 認証 | ✅ | ✅ | ✅ | ✅ |
ライブ メトリック | ✅ | ✅ | ✅ | ✅ |
Live Metrics のフィルター処理 | ✅ | ❌ | ❌ | ❌ |
VM/VMSS と App Service のリソース コンテキストを検出する | ✅ | ❌ | ✅ | ✅ |
Azure Kubernetes Service (AKS) と関数のリソース コンテキストを検出する | ❌ | ❌ | ❌ | ✅ |
Track Availability API を使って生成された可用性テスト イベント | ❌ | ❌ | ❌ | ✅ |
匿名ユーザー ID と合成ソースによる要求、依存関係、ログ、例外のフィルター処理 | ❌ | ❌ | ❌ | ✅ |
操作名による依存関係、ログ、例外のフィルター処理 | ❌ | ❌ | ❌ | ✅ |
アダプティブ サンプリング | ❌ | ❌ | ❌ | ✅ |
.NET Profiler | ⚠️ | ❌ | ❌ | ⚠️ |
スナップショット デバッガー | ❌ | ❌ | ❌ | ❌ |
キー
- ✅ この機能は、正式なサポートを受けるすべてのお客様が利用できます。
- ⚠️ この機能は、パブリック プレビューとして利用できます。 「Microsoft Azure プレビューの追加利用規約」を参照してください。
- ❌ この機能は利用できないか、適用されません。
OpenTelemetry は Web ブラウザーで使用できますか?
はい。ただし、お勧めしません。また、Azure ではサポートされていません。 OpenTelemetry JavaScript は、Node.js 用に非常に最適化されています。 代わりに、Application Insights JavaScript SDK を使用することをお勧めします。
Web ブラウザーで OpenTelemetry SDK を使用できるようになるのはいつですか?
OpenTelemetry Web SDK が利用可能になるタイムラインはまだ決定されていません。 Application Insights JavaScript SDK の有効な代替手段となるブラウザー SDK が登場するのは、おそらく数年先です。
現在、Web ブラウザーで OpenTelemetry をテストできますか?
OpenTelemetry Web Sandbox は、ブラウザーで OpenTelemetry を動作させるために設計されたフォークです。 Application Insights にテレメトリを送信することはまだできません。 この SDK では、一般的なクライアント イベントは定義されていません。
AppDynamics、DataDog、NewRelic などの競合エージェントと共に Application Insights を実行することはサポートされていますか?
このような実行をテストまたはサポートする予定はありませんが、Distro では、Azure Monitor と共に同時に OTLP エンドポイントにエクスポートできます。
運用環境でプレビュー機能を使用できますか?
それは推奨されません。 「Microsoft Azure プレビューの追加利用規約」を参照してください。
手動インストルメンテーションと自動インストルメンテーションの違いは何ですか?
「OpenTelemetry の概要」を参照してください。
OpenTelemetry Collector を使用できますか?
Microsoft がアプリケーション監視のためのエージェントベースのアプローチをまだ正式にサポートしていないにもかかわらず、一部のお客様は、エージェントの代替として OpenTelemetry-Collector を使い始めています。 その間、オープンソース コミュニティは OpenTelemetry-Collector Azure Monitor エクスポーターを提供してきました。一部のお客様は、これを使ってデータを Azure Monitor Application Insights に送信しています。 これは、Microsoft ではサポートされません。
OpenCensus と OpenTelemetry の違いは何ですか?
OpenCensus は OpenTelemetry の前段階です。 Microsoft は、OpenTracing と OpenCensus を統合して、世界の単一の監視標準である OpenTelemetry の作成を支援しました。 Azure Monitor 用に現在の運用環境で推奨されている Python SDK は、OpenCensus に基づいています。 Microsoft は、Azure Monitor を OpenTelemetry に基づくものにすることに取り組んでいます。
Grafana で Status: 500. Can't visualize trace events using the trace visualizer
が表示される理由
OpenTelemetry トレースでなく、生のテキスト ログを視覚化しようとしている可能性があります。
Application Insights の "トレース" テーブルには、診断目的で生のテキスト ログが格納されます。 ユーザー要求、その他のイベント、および例外レポートに関連付けられているトレースを識別して関連付けるのに役立ちます。 ただし、"トレース" テーブルは、Grafana などの視覚化ツールのエンドツーエンドのトランザクション ビュー (ウォーターフォール チャート) に直接提供されるわけではありません。
クラウドネイティブの実践の導入が拡大するにつれて、テレメトリの収集と用語は進化しています。 OpenTelemetry は、テレメトリ データの収集とインストルメント化の標準となりました。 このコンテキストでは、"トレース" という用語は新しい意味を持ちます。 OpenTelemetry の "トレース" は、生のログではなく、個々の作業単位を表すスパンを含む、より豊富で構造化された形式のテレメトリを意味します。 これらの範囲の拡大は、詳細なトランザクション ビューを構築し、クラウドネイティブ アプリケーションの監視と診断を向上するうえで重要です。
Blazor Apps はどのようにインストルメント化すればよいですか?
Blazor アプリをインストルメント化するには、まずホスティング モデルを特定します。 Blazor Server では、 OpenTelemetry ベースのフル インストルメンテーションがサポートされています。 Blazor WebAssembly はブラウザーで実行され、JavaScript による制限付きインストルメンテーションをサポートします。
トラブルシューティング
トラブルシューティング情報については、「 .NET での OpenTelemetry の問題のトラブルシューティング 」および 「Azure Monitor Application Insights の不足しているアプリケーション テレメトリのトラブルシューティング」を参照してください。
サポート
選択した言語のタブを選択して、サポート オプションを検出します。
- Azure サポートの問題については、Azure サポート チケットを開いてください。
- OpenTelemetry の問題については、OpenTelemetry .NET コミュニティに直接問い合わせてください。
- Azure Monitor Exporter に関連する未解決の問題の一覧については、GitHub のイシュー ページを参照してください。
OpenTelemetry のフィードバック
フィードバックを提供するには:
- OpenTelemetry コミュニティのカスタマー フィードバック アンケートに記入してください。
- Microsoft の OpenTelemetry 早期導入者コミュニティに参加して、お客様自身のことをお知らせください。
- Microsoft Tech Community で他の Azure Monitor ユーザーと交流してください。
- Azure フィードバック フォーラムで機能に関する要求を行ってください。