.NET での OpenTelemetry
.NET における OpenTelemetry は、フレームワークの既存のインストルメンテーション機能を基盤としているため、他の言語での実装とは異なる特徴があります。他のプラットフォームでは OpenTelemetry が完全なテレメトリ API を提供する必要がありますが、.NET はログ、メトリクス、アクティビティのためのプラットフォーム API を通じて、すでに堅牢な組み込みメカニズムを提供しています。OpenTelemetry .NET 実装は、新しいコンポーネントを作成するのではなく、これらのネイティブコンポーネント (System.Diagnostics など) を単純に活用します。これは、ライブラリ作成者がすでに使い慣れている標準的な .NET API を使用でき、OpenTelemetry がこれらの既存のインストルメンテーションポイントとシームレスに統合されることを意味します。
OpenTelemetry ライブラリ
.NET における OpenTelemetry は、3 つの基本的なパッケージカテゴリを中心に構成されています。
-
Core API パッケージは、テレメトリ収集のためのコアインターフェースと実装を含む、必須の基盤とベース機能を提供します。
-
Instrumentation パッケージは、さまざまな .NET コンポーネントや人気のあるライブラリからテレメトリデータを自動的に収集し、ASP.NET Core、HTTP クライアント、Entity Framework などのソースからメトリクス、トレース、ログをキャプチャします。
-
Exporter パッケージは、さまざまなオブザーバビリティプラットフォームへの橋渡しとして機能し、収集したテレメトリデータを Jaeger、Prometheus、または OTLP プロトコルをサポートする任意のシステムなど、さまざまな宛先に送信できるようにします。
これらのコンポーネントは、NuGet を通じて利用可能な統合されたシステムとして連携し、.NET アプリケーションに完全なオブザーバビリティソリューションを提供します。
以下の表は、これらのパッケージについて説明しています。
| パッケージ | 説明 |
|---|---|
| OpenTelemetry | コア機能を提供するメインの OTEL ライブラリです |
| OpenTelemetry.Instrumentation.AspNetCore | ASP.NET Core と Kestrel 向けのインストルメンテーションです |
| OpenTelemetry.Instrumentation.GrpcNetClient | gRPC クライアント向けのインストルメンテーションです |
| OpenTelemetry.Instrumentation.Http | HttpClient および HttpWebRequest クラス向けのインストルメンテーションです |
| OpenTelemetry.Instrumentation.SqlClient | Entity Framework Core などのデータベース操作をトレースするために使用される SqlClient 向けのインストルメンテーションです |
| OpenTelemetry.Exporter.Console | OTLP プロトコルを使用するエクスポーターです |
| OpenTelemetry.Exporter.OpenTelemetryProtocol | OTLP プロトコルを使用するエクスポーターです |
| OpenTelemetry.Exporter.Prometheus.AspNetCore | ASP.NET Core エンドポイントを使用して実装された Prometheus 向けのエクスポーターです |
| OpenTelemetry.Exporter.Zipkin | Zipkin トレーシング向けのエクスポーターです |
AWS .NET OpenTelemetry ライブラリ
AWS は、NuGet で利用可能な OpenTelemetry パッケージの最新版をリリースしました。これらのパッケージは、シンプルさと最新の OpenTelemetry 命名規則への準拠を目的として再設計されています。AWS SDK for .NET における強化されたオブザーバビリティのサポートや、Amazon Bedrock を含む AWS サービスの追加インストルメンテーション、さらに複数のバグ修正、機能強化、OpenTelemetry コミュニティによる貢献などの新機能が含まれています。
以下の表は、これらのパッケージについて説明しています。
| パッケージ | 説明 |
|---|---|
| OpenTelemetry.Instrumentation.AWS | AWS SDK for .NET の使用時に、AWS サービスに関する追加データでメトリクスとトレーシングの呼び出しを強化します。 |
| OpenTelemetry.Instrumentation.AWSLambda | 受信スパンを作成するために AWS Lambda ハンドラーをインストルメントする SDK メソッドです |
| OpenTelemetry.Resources.AWS | アプリケーションの実行場所に基づくメタデータでテレメトリを強化する AWS 固有のリソースディテクターです。Amazon EC2、AWS Elastic Beanstalk、Amazon Elastic Container Service (Amazon ECS)、Amazon Elastic Kubernetes Service (Amazon EKS) のサポートが含まれます |
| OpenTelemetry.Extensions.AWS | AWS X-Ray を介した Trace Context の伝播をサポートします。 |