例: Azure Monitor と Application Insights で OpenTelemetry を使用する
多くの商用アプリケーション パフォーマンス管理 (APM) システムから選択できます。 Azure の主要なアプリケーション監視製品は、Azure Monitor の一部である Application Insights です。 統合された APM 製品の利点の 1 つは、さまざまな監視データ ソースを関連付けることができる点です。 Application Insights には、豊富なビューと分析機能があります。
1. Application Insights ディストリビューションの追加
Azure Monitor での ASP.NET エクスペリエンスを容易にするために、OpenTelemetry の構成の大部分を行うラッパー パッケージ (OTel のディストリビューションと呼ばれます) が用意されています。
この例は、 OTLP チュートリアルに基づいています。 OTLP エクスポーターを使用してアプリケーション コードを作成するには、手順 1 から 5 に従います。 この例では、Application Insights にデータを送信するコードを拡張します。
Step 5 から同じプロジェクトを取得し次の NuGet パッケージを追加します。
<ItemGroup>
<PackageReference Include="Azure.Monitor.OpenTelemetry.AspNetCore" Version="1.3.0-beta.1" />
</ItemGroup>
Note
バージョンを最新の使用可能なバージョンに置き換える
2. エクスポーターを設定する
builder.Build();
する前に、次の OTel 初期化コードを追加します。
if (!string.IsNullOrEmpty(builder.Configuration["APPLICATIONINSIGHTS_CONNECTION_STRING"]))
{
otel.UseAzureMonitor();
}
UseAzureMonitor()
は、Application Insights 用の一般的なインストルメンテーション ライブラリとエクスポーターを追加するマジックです。 カスタムの Meter
と ActivitySource
の名前を登録に追加するだけで済みます。
Application Insights の場合と同じ OTel 初期化が OTLP に対して機能します。違いは、選択したエクスポーターです。 両方を同じアプリケーションで使用し、適切な環境変数を定義して選択できます。
3. 接続文字列を指定する
まだ Azure のお客様でない場合、https://azure.microsoft.com/free/ で無料アカウントを作成できます。 Azure Portal にログインし、既存の Application Insights リソースを選択するか、https://ms.portal.azure.com/#create/Microsoft.AppInsights を使用して新しいリソースを作成します。
Application Insights は、ポータル UI の右上にあるインストルメンテーション キーと接続文字列を使用してデータを保存および処理するためにどのインスタンスを使用するべきかを特定します。
Azure App Service を使用している場合、この接続文字列は環境変数としてアプリケーションに自動的に渡されます。 他のサービスの場合、またはローカルで実行する場合は、 APPLICATIONINSIGHTS_CONNECTION_STRING
環境変数または appsettings.jsonを使用して渡す必要があります。 ローカルで実行する場合は、 appsettings.development.jsonに値を追加するのが最も簡単です。
"AzureMonitor": {
"ConnectionString": "InstrumentationKey=12345678-abcd-abcd-abcd-12345678..."
}
Note
値をインスタンスの値で置き換えます。
4. Application Insights でアプリを調べる
アプリケーションを実行すると、テレメトリが Application Insights に送信されます。 これで、アプリケーションのログ、メトリック、分散トレースを取得できるはずです。 Azure Portal で Application Insights リソースを開きます。
.NET