次の方法で共有


.NET、Node.js、Python、Java アプリケーション用の Azure Monitor OpenTelemetry を有効にする

この記事では、OpenTelemetry ベースのデータ収集を有効にして、Azure Monitor Application Insights 内のエクスペリエンスを強化するように構成する方法について説明します。 Azure Monitor OpenTelemetry Distro をインストールする方法について説明します。 Azure Monitor OpenTelemetry Distro では、Azure Monitor 固有の機能のサポートを含む OpenTelemetry ディストリビューションが提供されています。 Distro では、トレース、メトリック、ログ、例外を収集するための OpenTelemetry インストルメンテーション ライブラリを含めることで、自動テレメトリを有効にし、カスタム テレメトリを収集できます。 また、Distro に含まれている Live Metrics 機能を使用することで、実稼働中の Web アプリケーションからさらに多くのテレメトリを監視および収集することができます。 Azure Monitor OpenTelemetry Distro を使用する利点の詳細については、「"Azure Monitor OpenTelemetry Distro" を使用する必要がある理由」を参照してください。

OpenTelemetry を使用したデータ収集の詳細については、データ収集の基本に関する記事、または OpenTelemetry に関する FAQ を参照してください。

OpenTelemetry のリリースの状態

OpenTelemetry オファリングは、.NET、Node.js、Python、Java アプリケーションで使用できます。

Note

  • 機能別のリリースの状態については、「よく寄せられる質問」を参照してください。
  • この記事の 2 番目のタブでは、従来の ASP.NET、コンソール アプリ、Windows フォーム (WinForms) など、すべての .NET シナリオについて説明します。

作業の開始

このセクションの手順に従い、OpenTelemetry を使用してアプリケーションをインストルメント化します。

前提条件

ヒント

Application Insights Classic API から移行する場合は、移行に関するドキュメントをご覧ください。

クライアント ライブラリをインストールする

最新の Azure.Monitor.OpenTelemetry.AspNetCore NuGet パッケージをインストールします。

dotnet add package Azure.Monitor.OpenTelemetry.AspNetCore 

Azure Monitor Application Insights を有効にする

Azure Monitor Application Insights を有効にするには、アプリケーションに若干の変更を加え、「接続文字列」を設定します。接続文字列は、ユーザーに固有の Distro が収集するテレメトリを送信する場所をアプリケーションに通知します。

アプリケーションを変更する

program.cs クラスにあるアプリケーション スタートアップに UseAzureMonitor() を追加します。

// Import the Azure.Monitor.OpenTelemetry.AspNetCore namespace.
using Azure.Monitor.OpenTelemetry.AspNetCore;

// Create a new WebApplicationBuilder instance.
var builder = WebApplication.CreateBuilder(args);

// Add OpenTelemetry and configure it to use Azure Monitor.
builder.Services.AddOpenTelemetry().UseAzureMonitor();

// Build the application.
var app = builder.Build();

// Run the application.
app.Run();

Application Insights リソースから接続文字列をコピーします

ヒント

まだお持ちでない場合、 Application Insights リソースを作成する絶好のタイミングです。 ここでは、新しい Application Insights リソースを作成し、既存のものを使用することをお勧めします。

一意の接続文字列をコピーするには:

Application Insights の概要と接続文字列を示すスクリーンショット。

  1. Application Insights リソースの [概要] ペインにアクセスしてください。
  2. 接続文字列を見つけます。
  3. 接続文字列をポイントし、[クリップボードにコピー] アイコンを選択します。

環境に接続文字列を貼り付ける

接続文字列を貼り付けるには、次のオプションから選択します。

A. 環境変数を使用して設定する (推奨)

次のコマンドの <Your Connection String> を、独自の一意の接続文字列に置き換えます。

APPLICATIONINSIGHTS_CONNECTION_STRING=<Your Connection String>

B. 構成ファイルを使用して設定する - Java のみ (推奨)

次のコンテンツを使って、applicationinsights.json という名前の構成ファイルを作成し、applicationinsights-agent-3.5.3.jar と同じディレクトリに配置します。

{
  "connectionString": "<Your Connection String>"
}

上記の JSON の <Your Connection String> を、独自の一意の接続文字列に置き換えます。

C. コードを使用して設定 - ASP.NET Core、Node.js、Python のみ (非推奨)

コードを使用した接続文字列の設定の例については、接続文字列の構成 を参照してください。

Note

接続文字列を複数の場所に設定した場合は、次の優先順位に従います。

  1. コード
  2. 環境変数
  3. 構成ファイル

データが流れていることを確認する

アプリケーションを実行し、Azure portal で [Application Insights リソース] タブを開きます。 データがポータルに表示されるまでに数分かかる場合があります。

サーバー要求とサーバー応答時間が強調表示されている [Application Insights の概要] タブのスクリーンショット。

Application Insights がアプリケーションに対して有効になりました。 次の手順はすべて省略可能であり、さらにカスタマイズできます。

重要

同じ Application Insights リソースにテレメトリを出力しているサービスが 2 つ以上ある場合は、アプリケーション マップ上で正しく表すために、クラウド ロール名を設定する必要があります。

Application Insights インストルメンテーションの使用時に、診断データが収集され、Microsoft に送信されます。 このデータは、Application Insights の実行と改善に役立ちます。 詳細については、「Azure Application Insights の Statsbeat」を参照してください。

サンプル

Azure Monitor OpenTelemetry サンプル アプリケーションは、サポートされているすべての言語で利用可能です。

次のステップ

よく寄せられる質問

このセクションでは、一般的な質問への回答を示します。

OpenTelemetry とは何ですか?

監視のための新しいオープンソース標準です。 詳細については、「OpenTelemetry」を参照してください。

Microsoft Azure Monitor が OpenTelemetry に投資しているのはなぜですか?

Microsoft は、OpenTelemetry への最大のコントリビューターの 1 つです。

OpenTelemetry の重要な価値提案は、ベンダーに中立であることと、言語間で一貫した API/SDK を提供することです。

時間の経過とともに、Microsoft は、OpenTelemetry によって、Azure Monitor のお客様がサポートされている言語以外の言語で記述されたアプリケーションを監視できるようになると考えるようになりました。 また、豊富なインストルメンテーション ライブラリのセットを通じて収集できるデータの種類も拡張します。 さらに、OpenTelemetry Software Development Kits (SDK) は、以前の Application Insights SDK よりもパフォーマンスが大規模に向上する傾向があります。

最後に、OpenTelemetry はオープン ソースを採用するという Microsoft の戦略に一致しています。

OpenTelemetry はどのような状況ですか?

OpenTelemetry の状態を参照してください。

"Azure Monitor OpenTelemetry Distro" とは

これは、Azure でのファースト クラスのエクスペリエンスのためにすべての OpenTelemetry コンポーネントをバンドルするシン ラッパーと考えることができます。 このラッパーは、OpenTelemetry のディストリビューションとも呼ばれます。

"Azure Monitor OpenTelemetry Distro" を使用する必要がある理由

コミュニティのネイティブ OpenTelemetry よりも Azure Monitor OpenTelemetry Distro を使用することには、いくつかの利点があります。

OpenTelemetry の精神に基づいて、ディストリビューションはオープンで拡張できるように設計されています。 たとえば、次のようなものを追加できます。

  • OpenTelemetry Protocol (OTLP) エクスポーターと 2 番目の宛先に同時に送信する
  • ディストリビューションに含まれていない他のインストルメンテーション ライブラリ

このディストリビューションは OpenTelemetry ディストリビューションを提供しているため、このディストリビューションは OpenTelemetry でサポートされているものすべてをサポートしています。 たとえば、OpenTelemetry でサポートされている場合は、テレメトリ プロセッサ、エクスポーター、インストルメンテーション ライブラリをさらに追加できます。

Note

このディストリビューションは、サンプラーを 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 を使用する必要がありますか?

Application Insights SDK の正式なサポートでのみ利用できる機能が必要な場合を除き、OpenTelemetry Distro を使うことをお勧めします。

OpenTelemetry を採用すると、後で移行する必要がなくなります。

どのようなときに 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 Java
分散トレース
カスタム メトリック
標準メトリック
固定レート サンプリング
オフライン ストレージと自動再試行
例外のレポート
ログの収集 ⚠️
[カスタム イベント] ⚠️ ⚠️ ⚠️
Microsoft Entra 認証
ライブ メトリック
Live Metrics のフィルター処理
VM/VMSS と App Service のリソース コンテキストを検出する
Azure Kubernetes Service (AKS) と関数のリソース コンテキストを検出する
Track Availability API を使って生成された可用性テスト イベント
匿名ユーザー ID と合成ソースによる要求、依存関係、ログ、例外のフィルター処理
操作名による依存関係、ログ、例外のフィルター処理
アダプティブ サンプリング
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 の違いは何ですか?

OpenCensusOpenTelemetry の前段階です。 Microsoft は、OpenTracing と OpenCensus を統合して、世界の単一の監視標準である OpenTelemetry の作成を支援しました。 Azure Monitor 用に現在の運用環境で推奨されている Python SDK は、OpenCensus に基づいています。 Microsoft は、Azure Monitor を OpenTelemetry に基づくものにすることに取り組んでいます。

トラブルシューティング

手順 1: 診断ログを有効にする

Azure Monitor エクスポーターでは、その内部ログのために EventSource を使用します。 エクスポーター ログは、OpenTelemetry-AzureMonitor-Exporter という名前のソースにオプトインすることで、EventListener で使用できます。 トラブルシューティングの手順については、GitHub の OpenTelemetry のトラブルシューティングに関するページを参照してください。

手順 2: アプリケーション ホストとインジェスト サービスの間の接続をテストする

Application Insights SDK とエージェントからテレメトリが送信され、インジェスト エンドポイントで REST 呼び出しとして取り込まれます。 Web サーバーまたはアプリケーション ホスト コンピューターからインジェスト サービス エンドポイントへの接続をテストするには、cURL コマンドまたは PowerShell の 生の REST 要求を使用します。 詳細については、「Azure Monitor Application Insights でアプリケーション テレメトリがない場合のトラブルシューティング」を参照してください。

既知の問題

Azure Monitor OpenTelemetry Exporter の既知の問題を次に示します。

  • 依存関係テレメトリに操作名がない。 操作名がないと、エラーが発生し、パフォーマンス タブのエクスペリエンスに悪影響を及ぼします。

  • 要求と依存関係のテレメトリにデバイス モデルがない。 デバイス モデルがないと、デバイスのコーホート分析に悪影響を及ぼします。

サポート

選択した言語のタブを選択して、サポート オプションを検出します。

OpenTelemetry のフィードバック

フィードバックを提供するには: