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

この記事では、OpenTelemetry ベースのデータ収集を有効にして、Azure Monitor Application Insights 内のエクスペリエンスを強化するように構成する方法について説明します。 "Azure Monitor OpenTelemetry Distro" をインストールする方法について説明します。Distro は、アプリケーションとその依存関係全体でトレース、メトリック、ログ、例外を 自動的に収集 します。 OpenTelemetry を使用したデータ収集の詳細については、データ収集の基本に関する記事、または OpenTelemetry に関する FAQ を参照してください。

OpenTelemetry のリリースの状態

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

Note

機能別のリリースの状態については、「よく寄せられる質問」を参照してください。

作業の開始

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

前提条件

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

最新の 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 リソースを作成し、既存のものを使用することをお勧めします。

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

Screenshot that shows Application Insights overview and connection string.

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

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

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

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

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

APPLICATIONINSIGHTS_CONNECTION_STRING=<Your Connection String>

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

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

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

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

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

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

Note

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

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

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

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

Screenshot of the Application Insights Overview tab with server requests and server response time highlighted.

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

重要

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

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

次のステップ

よく寄せられる質問

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

OpenTelemetry とは何ですか?

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

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

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

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 を使用することには、いくつかの利点があります。

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

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

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 では、OpenTelemetry ディストリビューションの使用をお勧めします。 1 行のコードで始められます。

他のすべての .NET シナリオ (従来の ASP.NET やコンソール アプリなど) では、.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 認証
ライブ メトリック
VM/VMSS と App Service のリソース コンテキストを検出する
AKS と関数のリソース コンテキストを検出する
可用性テストのスパン フィルター処理
ユーザー ID、認証されたユーザー ID、ユーザー IP の自動設定
操作名、ユーザー ID、または認証されたユーザー 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 に基づくものにすることに取り組んでいます。

トラブルシューティング

動作していませんか? ASP.NET Core のトラブルシューティング ページをご確認ください。

サポート

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

OpenTelemetry のフィードバック

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