Aspireの主な目的の 1 つは、アプリを簡単にデバッグおよび診断できるようにすることです。 Aspire 統合により、 .NETOpenTelemetry SDK を使用して、監視の柱と呼ばれるログ、トレース、メトリックの構成が自動的に設定されます。
ログ記録: ログ イベントは、アプリの実行時に何が起こっているかを示します。 ベースライン セットは既定で Aspire 統合に対して有効になっており、より広範なログ記録をオンデマンドで有効にして特定の問題を診断できます。
トレース: トレースは、複数のマシンまたはプロセスに分散されている場合でも、同じ論理アクティビティの一部であるログ イベント (1 つの要求の処理など) を関連付けます。
メトリック: メトリックは、アプリのパフォーマンスと正常性の特性を単純な数値として公開します。 その結果、パフォーマンスのオーバーヘッドが低く、多くのサービスで常にオンのテレメトリとして構成されます。 これにより、潜在的な問題が検出されたときにアラートをトリガーするのにも適しています。
これらの種類のテレメトリを組み合わせることで、さまざまな監視および分析ツールを使用して、アプリケーションの動作とパフォーマンスに関する分析情報を得ることができます。 バッキング サービスによっては、一部の統合でこれらの機能の一部のみがサポートされる場合があります。
Aspire OpenTelemetry 統合
.NET OpenTelemetry SDK には、.NET、ILogger、Activity、Meterなど、いくつかの Instrument<T> API からデータを収集するための機能が含まれています。 これらの API は、ログ記録、トレース、メトリックなどのテレメトリ機能に対応しています。 Aspire プロジェクトでは、OpenTelemetry プロジェクトで SDK 構成 定義します。 詳細については、サービスの既定値Aspire参照してください。
既定では、ConfigureOpenTelemetry メソッドを使用すると、アプリのログ記録、トレース、メトリックが有効になります。 また、他の監視ツールで収集できるように、これらのデータ ポイントのエクスポーターも追加されます。
監視のために OpenTelemetry データをエクスポートする
Aspire では、テレメトリ データをデータ ストアまたはレポート ツールにエクスポートできます。 テレメトリ エクスポート メカニズムは、OpenTelemetry プロトコル (OTLP)に依存します。これは、REST または gRPC を介してテレメトリ データを送信するための標準化されたアプローチとして機能します。
ConfigureOpenTelemetry メソッドは、プロメテウスや Azure Monitor などの他の監視ツールにテレメトリ データを提供するエクスポーターも登録します。 詳細については、OpenTelemetry 構成を参照してください。
OpenTelemetry 環境変数
Aspire プロジェクトは、エクスポートされたテレメトリでアプリの名前と ID を構成し、データをエクスポートするように OTLP サーバーのアドレス エンドポイントを設定する環境変数を使用して起動します。 例えば:
-
OTEL_SERVICE_NAME= マイフロントエンド -
OTEL_RESOURCE_ATTRIBUTES= service.instance.id=1a5f9c1e-e5ba-451b-95ee-ced1ee89c168 OTEL_EXPORTER_OTLP_ENDPOINT=http://localhost:4318
環境変数は、ローカル開発で自動的に設定されます。
Aspire ローカル開発
Aspire プロジェクトを作成すると、Aspire ダッシュボードに既定でアプリ テレメトリを表示するための UI が表示されます。 テレメトリ データは OTLP を使用してダッシュボードに送信され、ダッシュボードは OTLP サーバーを実装してテレメトリ データを受信し、メモリに格納します。 Aspireデバッグ ワークフローは次のとおりです。
- 開発者はデバッグを使用して Aspire プロジェクトを開始し、 F5 キーを押します。
- Aspire ダッシュボードと開発者コントロール プレーン (DCP) が起動します。
- アプリ構成は、AppHost プロジェクトで実行されます。
- OpenTelemetry 環境変数は、アプリの構成中に .NET プロジェクトに自動的に追加されます。
- DCP は、エクスポートされたテレメトリ内のアプリの名前 (
OTEL_SERVICE_NAME) と ID (OTEL_RESOURCE_ATTRIBUTES) を提供します。 - OTLP エンドポイントは、ダッシュボードによって開始される HTTP/2 ポートです。 このエンドポイントは、各プロジェクトの
OTEL_EXPORTER_OTLP_ENDPOINT環境変数で設定されます。 これは、テレメトリをダッシュボードにエクスポートし直すようプロジェクトに指示します。 - エクスポート間隔が小さい (
OTEL_BSP_SCHEDULE_DELAY、OTEL_BLRP_SCHEDULE_DELAY、OTEL_METRIC_EXPORT_INTERVAL) ため、ダッシュボードでデータをすばやく使用できます。 ローカル開発では、効率性よりもダッシュボードの応答性に優先順位を付けるために、小さな値が使用されます。
- DCP は、構成されたプロジェクト、コンテナー、実行可能ファイルを開始します。
- 開始すると、アプリはテレメトリをダッシュボードに送信します。
- ダッシュボードには、すべての Aspire プロジェクトのほぼリアルタイムのテレメトリが表示されます。
これらの手順はすべて内部的に行われるので、ほとんどの場合、開発者はこのプロセスの動作を確認するためにアプリを実行する必要があります。
Aspire 展開
Aspire デプロイ環境では、環境に適した OpenTelemetry 環境変数を構成する必要があります。 たとえば、OTEL_EXPORTER_OTLP_ENDPOINT は、環境のローカル OTLP コレクターまたは監視サービスに対して構成する必要があります。
Aspire テレメトリは、OTLP をサポートする環境で最適に機能します。
OTEL_EXPORTER_OTLP_ENDPOINT が構成されていない場合、OTLP エクスポートは無効になります。
詳細については、「 Aspire デプロイ」を参照してください。
Aspire