利用可能な計装

OpenTelemetry .NET 自動計装がサポートするライブラリ。

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すべての計装を有効にします。trueExperimental
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計装対象ライブラリサポートバージョン計装タイプステータス
ADONETADO.NET [1][2]バイトコードExperimental
ASPNETASP.NET (.NET Framework) MVC / WebApi [3] .NET ではサポートされていません* [4]ソースおよびバイトコードExperimental
ASPNETCOREASP.NET Core .NET Framework ではサポートされていません*ソースExperimental
AZUREAzure SDK[5]ソースExperimental
ELASTICSEARCHElastic.Clients.Elasticsearch* [6]ソースExperimental
ELASTICTRANSPORTElastic.Transport≥0.4.16ソースExperimental
ENTITYFRAMEWORKCOREMicrosoft.EntityFrameworkCore .NET Framework ではサポートされていません≥6.0.12ソースExperimental
GRAPHQLGraphQL .NET Framework ではサポートされていません≥7.5.0ソースExperimental
GRPCNETCLIENTGrpc.Net.Client≥2.52.0 & < 3.0.0ソースExperimental
HTTPCLIENTSystem.Net.Http.HttpClient および System.Net.HttpWebRequest*ソースExperimental
KAFKAConfluent.Kafka≥1.4.0 & < 3.0.0 [7]バイトコードExperimental
MASSTRANSITMassTransit .NET Framework ではサポートされていません≥8.0.0ソースExperimental
MONGODBMongoDB.Driver.Core / MongoDB.Driver≥2.7.0ソースまたはバイトコード [8]Experimental
MYSQLCONNECTORMySqlConnector≥2.0.0ソースExperimental
MYSQLDATAMySql.Data .NET Framework ではサポートされていません≥8.1.0ソースExperimental
NPGSQLNpgsql≥6.0.0ソースおよびバイトコード [14]Experimental
NSERVICEBUSNServiceBus≥8.0.0 & < 10.0.0ソースおよびバイトコードExperimental
ORACLEMDAOracle.ManagedDataAccess.Core および Oracle.ManagedDataAccess ARM64 ではサポートされていません≥23.4.0ソースExperimental
RABBITMQRabbitMQ.Client≥5.0.0ソースまたはバイトコード [9]Experimental
QUARTZQuartz Quartz 4.x は .NET 10+ でのみサポートされます。Quartz 3.x は .NET Framework 4.7.1 以前ではサポートされていません[15]ソースExperimental
SQLCLIENTMicrosoft.Data.SqlClient、System.Data.SqlClient [10] および System.Data(.NET Framework に同梱)* [11]ソースおよびバイトコード [12]Experimental
SQLITEMicrosoft.Data.Sqlite≥8.0.0 & < 12.0.0バイトコードExperimental
STACKEXCHANGEREDISStackExchange.Redis[13]ソースおよびバイトコードExperimental
WCFCLIENTWCF*ソースおよびバイトコードExperimental
WCFCORECoreWCF.Primitives .NET Framework ではサポートされていません≥1.8.0ソースExperimental
WCFSERVICEWCF .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計装対象ライブラリドキュメントサポートバージョン計装タイプステータス
ASPNETASP.NET Framework [1] .NET ではサポートされていませんASP.NET metrics*ソースおよびバイトコードExperimental
ASPNETCOREASP.NET Core .NET Framework ではサポートされていませんASP.NET Core metrics*ソースExperimental
HTTPCLIENTSystem.Net.Http.HttpClient および System.Net.HttpWebRequestHttpClient metrics*ソースExperimental
NETRUNTIMEOpenTelemetry.Instrumentation.RuntimeRuntime metrics*ソースExperimental
NPGSQLNpgsql .NET Framework ではサポートされていませんNpgsql metrics≥6.0.0ソースExperimental
NSERVICEBUSNServiceBusNServiceBus metrics≥8.0.0 & < 10.0.0ソースおよびバイトコードExperimental
PROCESSOpenTelemetry.Instrumentation.ProcessProcess metrics*ソースExperimental
QUARTZQuartz .NET 10+ でのみサポートされますQuartz metrics≥4.0.0ソースExperimental
SQLCLIENTMicrosoft.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計装対象ライブラリサポートバージョン計装タイプステータス
ILOGGERMicrosoft.Extensions.Logging .NET Framework ではサポートされていません≥8.0.0 && < 12.0.0バイトコードまたはソース [1]Experimental
LOG4NETlog4net [2]≥2.0.13 && < 4.0.0バイトコードExperimental
NLOGNLog [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_TEXTEntity Framework Core 計装が db.statement 属性を通じて SQL 文を渡せるかどうかを制御します。クエリには機密情報が含まれる場合があります。false に設定すると、db.statement はストアドプロシージャの実行時のみ記録されます。falseExperimental
OTEL_DOTNET_AUTO_GRAPHQL_SET_DOCUMENTGraphQL 計装が graphql.document 属性を通じて生のクエリを渡せるかどうかを制御します。クエリには機密情報が含まれる場合があります。falseExperimental
OTEL_DOTNET_AUTO_NPGSQL_CONTEXT_PROPAGATIONNpgsql 計装が、多重化されていないコマンドおよび Npgsql 10 の COPY 操作において application_name を通じて W3C traceparent を PostgreSQL に伝搬するかどうかを制御します。[3]falseExperimental
OTEL_DOTNET_AUTO_ORACLEMDA_DATABASE_OPENTELEMETRY_TRACINGOracle Client 計装がデータベースの OpenTelemetry トレーシングを有効にし、サーバーにコンテキストを伝搬するかどうかを制御します。[1]trueExperimental
OTEL_DOTNET_AUTO_ORACLEMDA_SET_DBSTATEMENT_FOR_TEXTOracle Client 計装が db.statement 属性を通じて SQL 文を渡せるかどうかを制御します。クエリには機密情報が含まれる場合があります。false に設定すると、db.statement はストアドプロシージャの実行時のみ記録されます。falseExperimental
OTEL_DOTNET_AUTO_SQLCLIENT_SET_DBSTATEMENT_FOR_TEXTSQL Client 計装が db.statement 属性を通じて SQL 文を渡せるかどうかを制御します。クエリには機密情報が含まれる場合があります。false に設定すると、db.statement はストアドプロシージャの実行時のみ記録されます。System.Data.SqlClient では .NET Framework でサポートされていません。falseExperimental
OTEL_DOTNET_AUTO_TRACES_ASPNET_INSTRUMENTATION_CAPTURE_REQUEST_HEADERSHTTP ヘッダー名のカンマ区切りリスト。ASP.NET 計装は、設定されたすべてのヘッダー名に対して HTTP リクエストヘッダーの値をキャプチャします。Experimental
OTEL_DOTNET_AUTO_TRACES_ASPNET_INSTRUMENTATION_CAPTURE_RESPONSE_HEADERSHTTP ヘッダー名のカンマ区切りリスト。ASP.NET 計装は、設定されたすべてのヘッダー名に対して HTTP レスポンスヘッダーの値をキャプチャします。IIS クラシックモードではサポートされていません。Experimental
OTEL_DOTNET_AUTO_TRACES_ASPNETCORE_INSTRUMENTATION_CAPTURE_REQUEST_HEADERSHTTP ヘッダー名のカンマ区切りリスト。ASP.NET Core 計装は、設定されたすべてのヘッダー名に対して HTTP リクエストヘッダーの値をキャプチャします。Experimental
OTEL_DOTNET_AUTO_TRACES_ASPNETCORE_INSTRUMENTATION_CAPTURE_RESPONSE_HEADERSHTTP ヘッダー名のカンマ区切りリスト。ASP.NET Core 計装は、設定されたすべてのヘッダー名に対して HTTP レスポンスヘッダーの値をキャプチャします。Experimental
OTEL_DOTNET_AUTO_TRACES_GRPCNETCLIENT_INSTRUMENTATION_CAPTURE_REQUEST_METADATAgRPC メタデータ名のカンマ区切りリスト。Grpc.Net.Client 計装は、設定されたすべてのメタデータ名に対して gRPC リクエストメタデータの値をキャプチャします。Experimental
OTEL_DOTNET_AUTO_TRACES_GRPCNETCLIENT_INSTRUMENTATION_CAPTURE_RESPONSE_METADATAgRPC メタデータ名のカンマ区切りリスト。Grpc.Net.Client 計装は、設定されたすべてのメタデータ名に対して gRPC レスポンスメタデータの値をキャプチャします。Experimental
OTEL_DOTNET_AUTO_TRACES_HTTP_INSTRUMENTATION_CAPTURE_REQUEST_HEADERSHTTP ヘッダー名のカンマ区切りリスト。HTTP Client 計装は、設定されたすべてのヘッダー名に対して HTTP リクエストヘッダーの値をキャプチャします。Experimental
OTEL_DOTNET_AUTO_TRACES_HTTP_INSTRUMENTATION_CAPTURE_RESPONSE_HEADERSHTTP ヘッダー名のカンマ区切りリスト。HTTP Client 計装は、設定されたすべてのヘッダー名に対して HTTP レスポンスヘッダーの値をキャプチャします。Experimental
OTEL_DOTNET_EXPERIMENTAL_ASPNETCORE_DISABLE_URL_QUERY_REDACTIONASP.NET Core 計装が url.query 属性値のリダクションを無効にするかどうかを制御します。falseExperimental
OTEL_DOTNET_EXPERIMENTAL_HTTPCLIENT_DISABLE_URL_QUERY_REDACTIONHTTP Client 計装が url.full 属性値のリダクションを無効にするかどうかを制御します。falseExperimental
OTEL_DOTNET_EXPERIMENTAL_ASPNET_DISABLE_URL_QUERY_REDACTIONASP.NET 計装が url.query 属性値のリダクションを無効にするかどうかを制御します。falseExperimental
OTEL_DOTNET_EXPERIMENTAL_SQLCLIENT_ENABLE_TRACE_CONTEXT_PROPAGATION.NET Framework のみ。SQLCLIENT 計装が SQL Server へのコンテキスト伝搬を有効にするかどうかを制御します。falseExperimental
OTEL_DOTNET_AUTO_SQLCLIENT_NETFX_ILREWRITE_ENABLED[2]falseExperimental

[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 回ログに記録します。