利用可能な計装
OpenTelemetry .NET 自動計装は、さまざまなライブラリをサポートしています。
計装
すべての計装は、すべてのシグナルタイプ(トレース、メトリクス、ログ)に対してデフォルトで有効になっています。
特定のシグナルタイプに対するすべての計装を無効にするには、環境変数 OTEL_DOTNET_AUTO_{SIGNAL}_INSTRUMENTATION_ENABLED を false に設定します。
より細かく制御するには、特定のシグナルタイプに対する個別の計装を無効にすることもできます。
環境変数 OTEL_DOTNET_AUTO_{SIGNAL}_{0}_INSTRUMENTATION_ENABLED を false に設定してください。
ここで {SIGNAL} はシグナルのタイプ(例: TRACES)、{0} は大文字小文字を区別する計装の名前です。
| 環境変数 | 説明 | デフォルト値 | ステータス |
|---|---|---|---|
OTEL_DOTNET_AUTO_INSTRUMENTATION_ENABLED | すべての計装を有効にします。 | true | Experimental |
OTEL_DOTNET_AUTO_TRACES_INSTRUMENTATION_ENABLED | すべてのトレース計装を有効にします。OTEL_DOTNET_AUTO_INSTRUMENTATION_ENABLED を上書きします。 | OTEL_DOTNET_AUTO_INSTRUMENTATION_ENABLED の現在の値を継承 | Experimental |
OTEL_DOTNET_AUTO_TRACES_{0}_INSTRUMENTATION_ENABLED | 特定のトレース計装を有効にするための設定パターンです。{0} は有効にしたい計装の大文字の ID です。OTEL_DOTNET_AUTO_TRACES_INSTRUMENTATION_ENABLED を上書きします。 | OTEL_DOTNET_AUTO_TRACES_INSTRUMENTATION_ENABLED の現在の値を継承 | Experimental |
OTEL_DOTNET_AUTO_METRICS_INSTRUMENTATION_ENABLED | すべてのメトリクス計装を無効にします。OTEL_DOTNET_AUTO_INSTRUMENTATION_ENABLED を上書きします。 | OTEL_DOTNET_AUTO_INSTRUMENTATION_ENABLED の現在の値を継承 | Experimental |
OTEL_DOTNET_AUTO_METRICS_{0}_INSTRUMENTATION_ENABLED | 特定のメトリクス計装を有効にするための設定パターンです。{0} は有効にしたい計装の大文字の ID です。OTEL_DOTNET_AUTO_METRICS_INSTRUMENTATION_ENABLED を上書きします。 | OTEL_DOTNET_AUTO_METRICS_INSTRUMENTATION_ENABLED の現在の値を継承 | Experimental |
OTEL_DOTNET_AUTO_LOGS_INSTRUMENTATION_ENABLED | すべてのログ計装を無効にします。OTEL_DOTNET_AUTO_INSTRUMENTATION_ENABLED を上書きします。 | OTEL_DOTNET_AUTO_INSTRUMENTATION_ENABLED の現在の値を継承 | Experimental |
OTEL_DOTNET_AUTO_LOGS_{0}_INSTRUMENTATION_ENABLED | 特定のログ計装を有効にするための設定パターンです。{0} は有効にしたい計装の大文字の ID です。OTEL_DOTNET_AUTO_LOGS_INSTRUMENTATION_ENABLED を上書きします。 | OTEL_DOTNET_AUTO_LOGS_INSTRUMENTATION_ENABLED の現在の値を継承 | Experimental |
トレース計装
ステータス: Mixed。 トレースは安定版ですが、安定したセマンティック規約がないため、個々の計装ライブラリは Experimental ステータスです。
| ID | 計装対象ライブラリ | サポートバージョン | 計装タイプ | ステータス |
|---|---|---|---|---|
ADONET | ADO.NET [1] | [2] | バイトコード | Experimental |
ASPNET | ASP.NET (.NET Framework) MVC / WebApi [3] .NET ではサポートされていません | * [4] | ソースおよびバイトコード | Experimental |
ASPNETCORE | ASP.NET Core .NET Framework ではサポートされていません | * | ソース | Experimental |
AZURE | Azure SDK | [5] | ソース | Experimental |
ELASTICSEARCH | Elastic.Clients.Elasticsearch | * [6] | ソース | Experimental |
ELASTICTRANSPORT | Elastic.Transport | ≥0.4.16 | ソース | Experimental |
ENTITYFRAMEWORKCORE | Microsoft.EntityFrameworkCore .NET Framework ではサポートされていません | ≥6.0.12 | ソース | Experimental |
GRAPHQL | GraphQL .NET Framework ではサポートされていません | ≥7.5.0 | ソース | Experimental |
GRPCNETCLIENT | Grpc.Net.Client | ≥2.52.0 & < 3.0.0 | ソース | Experimental |
HTTPCLIENT | System.Net.Http.HttpClient および System.Net.HttpWebRequest | * | ソース | Experimental |
KAFKA | Confluent.Kafka | ≥1.4.0 & < 3.0.0 [7] | バイトコード | Experimental |
MASSTRANSIT | MassTransit .NET Framework ではサポートされていません | ≥8.0.0 | ソース | Experimental |
MONGODB | MongoDB.Driver.Core / MongoDB.Driver | ≥2.7.0 | ソースまたはバイトコード [8] | Experimental |
MYSQLCONNECTOR | MySqlConnector | ≥2.0.0 | ソース | Experimental |
MYSQLDATA | MySql.Data .NET Framework ではサポートされていません | ≥8.1.0 | ソース | Experimental |
NPGSQL | Npgsql | ≥6.0.0 | ソースおよびバイトコード [14] | Experimental |
NSERVICEBUS | NServiceBus | ≥8.0.0 & < 10.0.0 | ソースおよびバイトコード | Experimental |
ORACLEMDA | Oracle.ManagedDataAccess.Core および Oracle.ManagedDataAccess ARM64 ではサポートされていません | ≥23.4.0 | ソース | Experimental |
RABBITMQ | RabbitMQ.Client | ≥5.0.0 | ソースまたはバイトコード [9] | Experimental |
QUARTZ | Quartz Quartz 4.x は .NET 10+ でのみサポートされます。Quartz 3.x は .NET Framework 4.7.1 以前ではサポートされていません | [15] | ソース | Experimental |
SQLCLIENT | Microsoft.Data.SqlClient、System.Data.SqlClient [10] および System.Data(.NET Framework に同梱) | * [11] | ソースおよびバイトコード [12] | Experimental |
SQLITE | Microsoft.Data.Sqlite | ≥8.0.0 & < 12.0.0 | バイトコード | Experimental |
STACKEXCHANGEREDIS | StackExchange.Redis | [13] | ソースおよびバイトコード | Experimental |
WCFCLIENT | WCF | * | ソースおよびバイトコード | Experimental |
WCFCORE | CoreWCF.Primitives .NET Framework ではサポートされていません | ≥1.8.0 | ソース | Experimental |
WCFSERVICE | WCF .NET ではサポートされていません。 | * | ソースおよびバイトコード | Experimental |
[1]: DbCommand メソッドをカバーする汎用的な ADO.NET 計装です。
オーバーライドされたメソッドの実装のみをカバーします。
通常、多くの実装は C# の new キーワードを利用しているため、そのようなケースには固有の実装が必要です。
この計装は、SQLCLIENT、NPGSQL、MYSQLDATA、MYSQLCONNECTOR、ORACLEMDA、SQLITE などの固有の計装でカバーされるライブラリは対象外です。
[2]: System.Data.Common(≥4.0.0 および <12.0.0)、.NET Framework 用の System.Data(≥2.0.0 および <5.0.0)、および netstandard(≥2.0.0 および <3.0.0)をサポートしています。
[3]: 統合パイプラインモードのみサポートされています。
[4]: ASP.NET (.NET Framework) MVC / WebApi は ARM64 ではサポートされていません。
[5]: 2021年10月1日以降にリリースされた Azure. 接頭辞のパッケージ。
[6]: Elastic.Clients.Elasticsearch バージョン ≥8.0.0 および <8.10.0。
バージョン ≥8.10.0 は Elastic.Transport 計装でサポートされます。
[7]: Confluent.Kafka は、Windows および Linux の ARM64 ではバージョン ≥1.8.2 から、macOS では ≥1.9.2 からサポートされています。
[8]: MongoDB.Driver は 3.7.0 未満のバージョンでのみバイトコード計装が必要です。
3.7.0+ ではソース計装のみを使用します。
[9]: RabbitMq.Client は 5.* および 6.* バージョンでのみバイトコード計装が必要です。
7.0.0+ ではソース計装のみを使用します。
[10]: System.Data.SqlClient は非推奨です。
[11]: Microsoft.Data.SqlClient v3.* は、イシューにより .NET Framework ではサポートされていません。
System.Data.SqlClient はバージョン 4.8.5 からサポートされています。
[12]: バイトコード計装はコンテキスト伝搬にのみ使用され、OTEL_DOTNET_EXPERIMENTAL_SQLCLIENT_ENABLE_TRACE_CONTEXT_PROPAGATION で設定できます。
[13]: StackExchange.Redis バージョン ≥2.6.122 および <4.0.0 が .NET でサポートされ、バージョン ≥2.6.122 および <3.0.0 が .NET Framework でサポートされています。
[14]: バイトコード計装はコンテキスト伝搬にのみ使用され、OTEL_DOTNET_AUTO_NPGSQL_CONTEXT_PROPAGATION で設定できます。
[15]: Quartz バージョン ≥3.4.0 および <4.0.0 がサポートされていますが、Quartz 3.x のサポートは非推奨です。
バージョン ≥4.0.0 は .NET 10+ でのみサポートされます。
メトリクス計装
ステータス: Mixed。 メトリクスは安定版ですが、安定したセマンティック規約がないため、個々の計装は Experimental ステータスです。
| ID | 計装対象ライブラリ | ドキュメント | サポートバージョン | 計装タイプ | ステータス |
|---|---|---|---|---|---|
ASPNET | ASP.NET Framework [1] .NET ではサポートされていません | ASP.NET metrics | * | ソースおよびバイトコード | Experimental |
ASPNETCORE | ASP.NET Core .NET Framework ではサポートされていません | ASP.NET Core metrics | * | ソース | Experimental |
HTTPCLIENT | System.Net.Http.HttpClient および System.Net.HttpWebRequest | HttpClient metrics | * | ソース | Experimental |
NETRUNTIME | OpenTelemetry.Instrumentation.Runtime | Runtime metrics | * | ソース | Experimental |
NPGSQL | Npgsql .NET Framework ではサポートされていません | Npgsql metrics | ≥6.0.0 | ソース | Experimental |
NSERVICEBUS | NServiceBus | NServiceBus metrics | ≥8.0.0 & < 10.0.0 | ソースおよびバイトコード | Experimental |
PROCESS | OpenTelemetry.Instrumentation.Process | Process metrics | * | ソース | Experimental |
QUARTZ | Quartz .NET 10+ でのみサポートされます | Quartz metrics | ≥4.0.0 | ソース | Experimental |
SQLCLIENT | Microsoft.Data.SqlClient、System.Data.SqlClient [2] および System.Data(.NET Framework に同梱) | SqlClient metrics | * [3] | ソース | Experimental |
[1]: ASP.NET メトリクスは、AspNet トレース計装も有効な場合にのみ生成されます。
[2]: System.Data.SqlClient は非推奨です。
[3]: Microsoft.Data.SqlClient v3.* は、イシューにより .NET Framework ではサポートされていません。
System.Data.SqlClient はバージョン 4.8.5 からサポートされています。
ログ計装
ステータス: Experimental。
| ID | 計装対象ライブラリ | サポートバージョン | 計装タイプ | ステータス |
|---|---|---|---|---|
ILOGGER | Microsoft.Extensions.Logging .NET Framework ではサポートされていません | ≥8.0.0 && < 12.0.0 | バイトコードまたはソース [1] | Experimental |
LOG4NET | log4net [2] | ≥2.0.13 && < 4.0.0 | バイトコード | Experimental |
NLOG | NLog [2] | ≥5.0.0 && < 7.0.0 | バイトコード | Experimental |
[1]: ASP.NET Core アプリケーションでは、環境変数 ASPNETCORE_HOSTINGSTARTUPASSEMBLIES を OpenTelemetry.AutoInstrumentation.AspNetCoreBootstrapper に設定することで、.NET CLR プロファイラーを使用せずに LoggingBuilder 計装を有効にできます。
[2]: この計装はトレースコンテキスト注入とログブリッジの両方を提供します。
計装オプション
| 環境変数 | 説明 | デフォルト値 | ステータス |
|---|---|---|---|
OTEL_DOTNET_AUTO_ENTITYFRAMEWORKCORE_SET_DBSTATEMENT_FOR_TEXT | Entity Framework Core 計装が db.statement 属性を通じて SQL 文を渡せるかどうかを制御します。クエリには機密情報が含まれる場合があります。false に設定すると、db.statement はストアドプロシージャの実行時のみ記録されます。 | false | Experimental |
OTEL_DOTNET_AUTO_GRAPHQL_SET_DOCUMENT | GraphQL 計装が graphql.document 属性を通じて生のクエリを渡せるかどうかを制御します。クエリには機密情報が含まれる場合があります。 | false | Experimental |
OTEL_DOTNET_AUTO_NPGSQL_CONTEXT_PROPAGATION | Npgsql 計装が、多重化されていないコマンドおよび Npgsql 10 の COPY 操作において application_name を通じて W3C traceparent を PostgreSQL に伝搬するかどうかを制御します。[3] | false | Experimental |
OTEL_DOTNET_AUTO_ORACLEMDA_DATABASE_OPENTELEMETRY_TRACING | Oracle Client 計装がデータベースの OpenTelemetry トレーシングを有効にし、サーバーにコンテキストを伝搬するかどうかを制御します。[1] | true | Experimental |
OTEL_DOTNET_AUTO_ORACLEMDA_SET_DBSTATEMENT_FOR_TEXT | Oracle Client 計装が db.statement 属性を通じて SQL 文を渡せるかどうかを制御します。クエリには機密情報が含まれる場合があります。false に設定すると、db.statement はストアドプロシージャの実行時のみ記録されます。 | false | Experimental |
OTEL_DOTNET_AUTO_SQLCLIENT_SET_DBSTATEMENT_FOR_TEXT | SQL Client 計装が db.statement 属性を通じて SQL 文を渡せるかどうかを制御します。クエリには機密情報が含まれる場合があります。false に設定すると、db.statement はストアドプロシージャの実行時のみ記録されます。System.Data.SqlClient では .NET Framework でサポートされていません。 | false | Experimental |
OTEL_DOTNET_AUTO_TRACES_ASPNET_INSTRUMENTATION_CAPTURE_REQUEST_HEADERS | HTTP ヘッダー名のカンマ区切りリスト。ASP.NET 計装は、設定されたすべてのヘッダー名に対して HTTP リクエストヘッダーの値をキャプチャします。 | Experimental | |
OTEL_DOTNET_AUTO_TRACES_ASPNET_INSTRUMENTATION_CAPTURE_RESPONSE_HEADERS | HTTP ヘッダー名のカンマ区切りリスト。ASP.NET 計装は、設定されたすべてのヘッダー名に対して HTTP レスポンスヘッダーの値をキャプチャします。IIS クラシックモードではサポートされていません。 | Experimental | |
OTEL_DOTNET_AUTO_TRACES_ASPNETCORE_INSTRUMENTATION_CAPTURE_REQUEST_HEADERS | HTTP ヘッダー名のカンマ区切りリスト。ASP.NET Core 計装は、設定されたすべてのヘッダー名に対して HTTP リクエストヘッダーの値をキャプチャします。 | Experimental | |
OTEL_DOTNET_AUTO_TRACES_ASPNETCORE_INSTRUMENTATION_CAPTURE_RESPONSE_HEADERS | HTTP ヘッダー名のカンマ区切りリスト。ASP.NET Core 計装は、設定されたすべてのヘッダー名に対して HTTP レスポンスヘッダーの値をキャプチャします。 | Experimental | |
OTEL_DOTNET_AUTO_TRACES_GRPCNETCLIENT_INSTRUMENTATION_CAPTURE_REQUEST_METADATA | gRPC メタデータ名のカンマ区切りリスト。Grpc.Net.Client 計装は、設定されたすべてのメタデータ名に対して gRPC リクエストメタデータの値をキャプチャします。 | Experimental | |
OTEL_DOTNET_AUTO_TRACES_GRPCNETCLIENT_INSTRUMENTATION_CAPTURE_RESPONSE_METADATA | gRPC メタデータ名のカンマ区切りリスト。Grpc.Net.Client 計装は、設定されたすべてのメタデータ名に対して gRPC レスポンスメタデータの値をキャプチャします。 | Experimental | |
OTEL_DOTNET_AUTO_TRACES_HTTP_INSTRUMENTATION_CAPTURE_REQUEST_HEADERS | HTTP ヘッダー名のカンマ区切りリスト。HTTP Client 計装は、設定されたすべてのヘッダー名に対して HTTP リクエストヘッダーの値をキャプチャします。 | Experimental | |
OTEL_DOTNET_AUTO_TRACES_HTTP_INSTRUMENTATION_CAPTURE_RESPONSE_HEADERS | HTTP ヘッダー名のカンマ区切りリスト。HTTP Client 計装は、設定されたすべてのヘッダー名に対して HTTP レスポンスヘッダーの値をキャプチャします。 | Experimental | |
OTEL_DOTNET_EXPERIMENTAL_ASPNETCORE_DISABLE_URL_QUERY_REDACTION | ASP.NET Core 計装が url.query 属性値のリダクションを無効にするかどうかを制御します。 | false | Experimental |
OTEL_DOTNET_EXPERIMENTAL_HTTPCLIENT_DISABLE_URL_QUERY_REDACTION | HTTP Client 計装が url.full 属性値のリダクションを無効にするかどうかを制御します。 | false | Experimental |
OTEL_DOTNET_EXPERIMENTAL_ASPNET_DISABLE_URL_QUERY_REDACTION | ASP.NET 計装が url.query 属性値のリダクションを無効にするかどうかを制御します。 | false | Experimental |
OTEL_DOTNET_EXPERIMENTAL_SQLCLIENT_ENABLE_TRACE_CONTEXT_PROPAGATION | .NET Framework のみ。SQLCLIENT 計装が SQL Server へのコンテキスト伝搬を有効にするかどうかを制御します。 | false | Experimental |
OTEL_DOTNET_AUTO_SQLCLIENT_NETFX_ILREWRITE_ENABLED | [2] | false | Experimental |
[1]: この機能はパッケージ 23.26.200 以降でのみサポートされています。
Oracle AI Database 26ai サーバーも必要です。
[2]: .NET Framework 上の SqlCommand の IL リライトを有効にし、SqlClient 計装で db.query.text および db.query.summary が設定されるために必要な CommandText が利用可能であることを保証します。
以前は CommandText はストアドプロシージャに対してのみ利用可能でした。
この設定を有効にすると、生のクエリに対しても利用可能になります。
これにより SqlEventSource が発行するイベントの動作が変更されます。
このメカニズムが使用されている場合、アプリケーションの他の部分に影響を与える可能性があります。
[3]: OpenTelemetry Collector Contrib の PostgreSQL レシーバーは、この値を db.server.query_sample イベント上の postgresql.application_name として公開します。
クエリサンプルの収集はデフォルトで無効であり、pg_monitor が必要です。固定バージョンのレシーバー設定を参照してください。
伝搬は、トレース対象の各操作の前に Npgsql の同期的な ExecuteInternalCommand パスを通じて SET application_name を実行します。
Npgsql はそのコマンドをフラッシュし、CommandComplete と ReadyForQuery のレスポンスを待つため、伝搬はトレース対象の操作ごとにデータベースとの 1 回のラウンドトリップを追加します。
アプリケーションの SQL を変更、接頭辞付与、結合することはありません。
Npgsql がユーザーアクションを終了する際、コネクターをまだ所有している間に、計装は同じパスを通じて RESET application_name を実行します。
これにより、伝搬された操作ごとに 1 回のクリーンアップラウンドトリップが追加され、呼び出し元に制御が戻るかコネクターが別の操作に使用される前に、接続が開かれたときに設定されたセッションデフォルトに値がリセットされます。
PostgreSQL の RESET は SET で後から割り当てられた値を復元しないため、このオプションを有効にすると、実行時にアプリケーションコードが application_name に対して行った変更が上書きされる可能性があります。
Npgsql の EndUserAction ライフサイクルを参照してください。
これらの内部コマンドは PostgreSQL の Simple Query フローを使用し、以前の名前なしステートメントとポータルを破棄します。Npgsql の明示的に準備されたステートメントと自動的に準備されたステートメントは名前付きであり、物理接続に関連付けられたままです。
PostgreSQL の拡張クエリプロトコルのルールおよび Npgsql のプリペアドステートメントのドキュメントを参照してください。
SET と RESET は実際の PostgreSQL ステートメントであるため、短い実行中にポーリングしているオブザーバーが理論的にそれらをサンプリングする可能性があります。
トランザクションが失敗した状態の間はクリーンアップが遅延され、最初に ROLLBACK が実行できるようにした後、リカバリーアクションが正常に終了したときに実行されます。
Npgsql 10+ の COPY 操作は、TraceCopyStart ライフサイクルを通じてカバーされます。
多重化はサポートされていません。application_name は物理セッションの状態であり、Npgsql は 1 回の多重化ループで同じコネクターに複数の論理コマンドを書き込むことができます。
計装は多重化されたコネクターを検出すると、安全に伝搬をスキップし、警告を 1 回ログに記録します。
フィードバック
このページは役に立ちましたか?
Thank you. Your feedback is appreciated!
Please let us know how we can improve this page. Your feedback is appreciated!