Available instrumentations

OpenTelemetry .NET Automatic Instrumentation supported libraries.

Ви переглядаєте англійську версію сторінки, тому що її ще не було повністю перекладеною українською. Бажаєте допомогти? Дивіться як взяти Участь.

PS. Неофіційний український переклад (не перевірений і не ухвалений OpenTelemetry) доступний на сайті члена спільноти, створеному на основі PR #5891. Ми надаємо це посилання як тимчасовий захід підтримки українських читачів та потенційних учасників, доки не буде готовий офіційний переклад.

The OpenTelemetry .NET Automatic Instrumentation supports a wide variety of libraries.

Instrumentations

All instrumentations are enabled by default for all signal types (traces, metrics, and logs).

You can disable all instrumentations for a specific signal type by setting the OTEL_DOTNET_AUTO_{SIGNAL}_INSTRUMENTATION_ENABLED environment variable to false.

For a more granular approach, you can disable specific instrumentations for a given signal type by setting the OTEL_DOTNET_AUTO_{SIGNAL}_{0}_INSTRUMENTATION_ENABLED environment variable to false, where {SIGNAL} is the type of signal, for example TRACES, and {0} is the case-sensitive name of the instrumentation.

Environment variableDescriptionDefault valueStatus
OTEL_DOTNET_AUTO_INSTRUMENTATION_ENABLEDEnables all instrumentations.trueExperimental
OTEL_DOTNET_AUTO_TRACES_INSTRUMENTATION_ENABLEDEnables all trace instrumentations. Overrides OTEL_DOTNET_AUTO_INSTRUMENTATION_ENABLED.Inherited from the current value of OTEL_DOTNET_AUTO_INSTRUMENTATION_ENABLEDExperimental
OTEL_DOTNET_AUTO_TRACES_{0}_INSTRUMENTATION_ENABLEDConfiguration pattern for enabling a specific trace instrumentation, where {0} is the uppercase ID of the instrumentation you want to enable. Overrides OTEL_DOTNET_AUTO_TRACES_INSTRUMENTATION_ENABLED.Inherited from the current value of OTEL_DOTNET_AUTO_TRACES_INSTRUMENTATION_ENABLEDExperimental
OTEL_DOTNET_AUTO_METRICS_INSTRUMENTATION_ENABLEDDisables all metric instrumentations. Overrides OTEL_DOTNET_AUTO_INSTRUMENTATION_ENABLED.Inherited from the current value of OTEL_DOTNET_AUTO_INSTRUMENTATION_ENABLEDExperimental
OTEL_DOTNET_AUTO_METRICS_{0}_INSTRUMENTATION_ENABLEDConfiguration pattern for enabling a specific metric instrumentation, where {0} is the uppercase ID of the instrumentation you want to enable. Overrides OTEL_DOTNET_AUTO_METRICS_INSTRUMENTATION_ENABLED.Inherited from the current value of OTEL_DOTNET_AUTO_METRICS_INSTRUMENTATION_ENABLEDExperimental
OTEL_DOTNET_AUTO_LOGS_INSTRUMENTATION_ENABLEDDisables all log instrumentations. Overrides OTEL_DOTNET_AUTO_INSTRUMENTATION_ENABLED.Inherited from the current value of OTEL_DOTNET_AUTO_INSTRUMENTATION_ENABLEDExperimental
OTEL_DOTNET_AUTO_LOGS_{0}_INSTRUMENTATION_ENABLEDConfiguration pattern for enabling a specific log instrumentation, where {0} is the uppercase ID of the instrumentation you want to enable. Overrides OTEL_DOTNET_AUTO_LOGS_INSTRUMENTATION_ENABLED.Inherited from the current value of OTEL_DOTNET_AUTO_LOGS_INSTRUMENTATION_ENABLEDExperimental

Traces instrumentations

Status: Mixed. Traces are stable, but particular instrumentation libraries are in Experimental status due to lack of stable semantic convention.

IDInstrumented librarySupported versionsInstrumentation typeStatus
ADONETADO.NET [1][2]bytecodeExperimental
ASPNETASP.NET (.NET Framework) MVC / WebApi [3] Not supported on .NET* [4]source & bytecodeExperimental
ASPNETCOREASP.NET Core Not supported on .NET Framework*sourceExperimental
AZUREAzure SDK[5]sourceExperimental
ELASTICSEARCHElastic.Clients.Elasticsearch* [6]sourceExperimental
ELASTICTRANSPORTElastic.Transport≥0.4.16sourceExperimental
ENTITYFRAMEWORKCOREMicrosoft.EntityFrameworkCore Not supported on .NET Framework≥6.0.12sourceExperimental
GRAPHQLGraphQL Not supported on .NET Framework≥7.5.0sourceExperimental
GRPCNETCLIENTGrpc.Net.Client≥2.52.0 & < 3.0.0sourceExperimental
HTTPCLIENTSystem.Net.Http.HttpClient and System.Net.HttpWebRequest*sourceExperimental
KAFKAConfluent.Kafka≥1.4.0 & < 3.0.0 [7]bytecodeExperimental
MASSTRANSITMassTransit Not supported on .NET Framework≥8.0.0sourceExperimental
MONGODBMongoDB.Driver.Core / MongoDB.Driver≥2.7.0source or bytecode [8]Experimental
MYSQLCONNECTORMySqlConnector≥2.0.0sourceExperimental
MYSQLDATAMySql.Data Not supported on .NET Framework≥8.1.0sourceExperimental
NPGSQLNpgsql≥6.0.0source & bytecode [14]Experimental
NSERVICEBUSNServiceBus≥8.0.0 & < 10.0.0source & bytecodeExperimental
ORACLEMDAOracle.ManagedDataAccess.Core and Oracle.ManagedDataAccess Not supported on ARM64≥23.4.0sourceExperimental
RABBITMQRabbitMQ.Client≥5.0.0source or bytecode [9]Experimental
QUARTZQuartz Quartz 4.x is supported on .NET 10+ only; Quartz 3.x is not supported on .NET Framework 4.7.1 or earlier[15]sourceExperimental
SQLCLIENTMicrosoft.Data.SqlClient, System.Data.SqlClient [10] and System.Data (shipped with .NET Framework)* [11]source & bytecode [12]Experimental
SQLITEMicrosoft.Data.Sqlite≥8.0.0 & < 12.0.0bytecodeExperimental
STACKEXCHANGEREDISStackExchange.Redis[13]source & bytecodeExperimental
WCFCLIENTWCF*source & bytecodeExperimental
WCFCORECoreWCF.Primitives Not supported on .NET Framework≥1.8.0sourceExperimental
WCFSERVICEWCF Not supported on .NET.*source & bytecodeExperimental

[1]: Generic ADO.NET instrumentation that covers DbCommand methods. It covers only implementations for overridden methods. Typically, a lot of implementations utilize the new C# keyword; such cases need specific implementations. This instrumentation does not cover libraries covered by specific instrumentations such as SQLCLIENT, NPGSQL, MYSQLDATA, MYSQLCONNECTOR, ORACLEMDA, or SQLITE.

[2]: Supports System.Data.Common (≥4.0.0 and <12.0.0), System.Data for .NET Framework (≥2.0.0 and <5.0.0), and netstandard (≥2.0.0 and <3.0.0).

[3]: Only integrated pipeline mode is supported.

[4]: ASP.NET (.NET Framework) MVC / WebApi is not supported on ARM64.

[5]: Azure. prefixed packages, released after October 1, 2021.

[6]: Elastic.Clients.Elasticsearch version ≥8.0.0 and <8.10.0. Version ≥8.10.0 is supported by Elastic.Transport instrumentation.

[7]: Confluent.Kafka is supported from version ≥1.8.2 on ARM64 for Windows and Linux, and ≥1.9.2 on macOS.

[8]: MongoDB.Driver needs bytecode instrumentation only for < 3.7.0 versions; 3.7.0+ uses only source instrumentation.

[9]: RabbitMq.Client needs bytecode instrumentation only for 5.* and 6.* versions, 7.0.0+ uses only source instrumentation.

[10]: System.Data.SqlClient is deprecated.

[11]: Microsoft.Data.SqlClient v3.* is not supported on .NET Framework, due to issue. System.Data.SqlClient is supported from version 4.8.5.

[12]: Bytecode instrumentation is used only for context propagation, configurable by OTEL_DOTNET_EXPERIMENTAL_SQLCLIENT_ENABLE_TRACE_CONTEXT_PROPAGATION.

[13]: StackExchange.Redis versions ≥2.6.122 and <4.0.0 are supported on .NET, and versions ≥2.6.122 and <3.0.0 are supported on .NET Framework.

[14]: Bytecode instrumentation is used only for context propagation, configurable by OTEL_DOTNET_AUTO_NPGSQL_CONTEXT_PROPAGATION.

[15]: Quartz versions ≥3.4.0 and <4.0.0 are supported, but support for Quartz 3.x is deprecated. Versions ≥4.0.0 are supported on .NET 10+ only.

Metrics instrumentations

Status: Mixed. Metrics are stable, but particular instrumentation are in Experimental status due to lack of stable semantic convention.

IDInstrumented libraryDocumentationSupported versionsInstrumentation typeStatus
ASPNETASP.NET Framework [1] Not supported on .NETASP.NET metrics*source & bytecodeExperimental
ASPNETCOREASP.NET Core Not supported on .NET FrameworkASP.NET Core metrics*sourceExperimental
HTTPCLIENTSystem.Net.Http.HttpClient and System.Net.HttpWebRequestHttpClient metrics*sourceExperimental
NETRUNTIMEOpenTelemetry.Instrumentation.RuntimeRuntime metrics*sourceExperimental
NPGSQLNpgsql Not supported on .NET FrameworkNpgsql metrics≥6.0.0sourceExperimental
NSERVICEBUSNServiceBusNServiceBus metrics≥8.0.0 & < 10.0.0source & bytecodeExperimental
PROCESSOpenTelemetry.Instrumentation.ProcessProcess metrics*sourceExperimental
QUARTZQuartz Supported on .NET 10+ onlyQuartz metrics≥4.0.0sourceExperimental
SQLCLIENTMicrosoft.Data.SqlClient, System.Data.SqlClient [2] and System.Data (shipped with .NET Framework)SqlClient metrics* [3]sourceExperimental

[1]: The ASP.NET metrics are generated only if the AspNet trace instrumentation is also enabled.

[2]: System.Data.SqlClient is deprecated.

[3]: Microsoft.Data.SqlClient v3.* is not supported on .NET Framework, due to issue. System.Data.SqlClient is supported from version 4.8.5.

Logs instrumentations

Status: Experimental.

IDInstrumented librarySupported versionsInstrumentation typeStatus
ILOGGERMicrosoft.Extensions.Logging Not supported on .NET Framework≥8.0.0 && < 12.0.0bytecode or source [1]Experimental
LOG4NETlog4net [2]≥2.0.13 && < 4.0.0bytecodeExperimental
NLOGNLog [2]≥5.0.0 && < 7.0.0bytecodeExperimental

[1]: For ASP.NET Core applications, the LoggingBuilder instrumentation can be enabled without using the .NET CLR Profiler by setting the ASPNETCORE_HOSTINGSTARTUPASSEMBLIES environment variable to OpenTelemetry.AutoInstrumentation.AspNetCoreBootstrapper.

[2]: Instrumentation provides both trace context injection and logs bridge.

Instrumentation options

Environment variableDescriptionDefault valueStatus
OTEL_DOTNET_AUTO_ENTITYFRAMEWORKCORE_SET_DBSTATEMENT_FOR_TEXTWhether the Entity Framework Core instrumentation can pass SQL statements through the db.statement attribute. Queries might contain sensitive information. If set to false, db.statement is recorded only for executing stored procedures.falseExperimental
OTEL_DOTNET_AUTO_GRAPHQL_SET_DOCUMENTWhether the GraphQL instrumentation can pass raw queries through the graphql.document attribute. Queries might contain sensitive information.falseExperimental
OTEL_DOTNET_AUTO_NPGSQL_CONTEXT_PROPAGATIONWhether the Npgsql instrumentation propagates the W3C traceparent to PostgreSQL through application_name for non-multiplexed commands and Npgsql 10 COPY operations. [3]falseExperimental
OTEL_DOTNET_AUTO_ORACLEMDA_DATABASE_OPENTELEMETRY_TRACINGWhether the Oracle Client instrumentation enables database OpenTelemetry tracing and propagates context to the server. [1]trueExperimental
OTEL_DOTNET_AUTO_ORACLEMDA_SET_DBSTATEMENT_FOR_TEXTWhether the Oracle Client instrumentation can pass SQL statements through the db.statement attribute. Queries might contain sensitive information. If set to false, db.statement is recorded only for executing stored procedures.falseExperimental
OTEL_DOTNET_AUTO_SQLCLIENT_SET_DBSTATEMENT_FOR_TEXTWhether the SQL Client instrumentation can pass SQL statements through the db.statement attribute. Queries might contain sensitive information. If set to false, db.statement is recorded only for executing stored procedures. Not supported on .NET Framework for System.Data.SqlClient.falseExperimental
OTEL_DOTNET_AUTO_TRACES_ASPNET_INSTRUMENTATION_CAPTURE_REQUEST_HEADERSA comma-separated list of HTTP header names. ASP.NET instrumentations will capture HTTP request header values for all configured header names.Experimental
OTEL_DOTNET_AUTO_TRACES_ASPNET_INSTRUMENTATION_CAPTURE_RESPONSE_HEADERSA comma-separated list of HTTP header names. ASP.NET instrumentations will capture HTTP response header values for all configured header names. Not supported on IIS Classic mode.Experimental
OTEL_DOTNET_AUTO_TRACES_ASPNETCORE_INSTRUMENTATION_CAPTURE_REQUEST_HEADERSA comma-separated list of HTTP header names. ASP.NET Core instrumentations will capture HTTP request header values for all configured header names.Experimental
OTEL_DOTNET_AUTO_TRACES_ASPNETCORE_INSTRUMENTATION_CAPTURE_RESPONSE_HEADERSA comma-separated list of HTTP header names. ASP.NET Core instrumentations will capture HTTP response header values for all configured header names.Experimental
OTEL_DOTNET_AUTO_TRACES_GRPCNETCLIENT_INSTRUMENTATION_CAPTURE_REQUEST_METADATAA comma-separated list of gRPC metadata names. Grpc.Net.Client instrumentations will capture gRPC request metadata values for all configured metadata names.Experimental
OTEL_DOTNET_AUTO_TRACES_GRPCNETCLIENT_INSTRUMENTATION_CAPTURE_RESPONSE_METADATAA comma-separated list of gRPC metadata names. Grpc.Net.Client instrumentations will capture gRPC response metadata values for all configured metadata names.Experimental
OTEL_DOTNET_AUTO_TRACES_HTTP_INSTRUMENTATION_CAPTURE_REQUEST_HEADERSA comma-separated list of HTTP header names. HTTP Client instrumentations will capture HTTP request header values for all configured header names.Experimental
OTEL_DOTNET_AUTO_TRACES_HTTP_INSTRUMENTATION_CAPTURE_RESPONSE_HEADERSA comma-separated list of HTTP header names. HTTP Client instrumentations will capture HTTP response header values for all configured header names.Experimental
OTEL_DOTNET_EXPERIMENTAL_ASPNETCORE_DISABLE_URL_QUERY_REDACTIONWhether the ASP.NET Core instrumentation turns off redaction of the url.query attribute value.falseExperimental
OTEL_DOTNET_EXPERIMENTAL_HTTPCLIENT_DISABLE_URL_QUERY_REDACTIONWhether the HTTP client instrumentation turns off redaction of the url.full attribute value.falseExperimental
OTEL_DOTNET_EXPERIMENTAL_ASPNET_DISABLE_URL_QUERY_REDACTIONWhether the ASP.NET instrumentation turns off redaction of the url.query attribute value.falseExperimental
OTEL_DOTNET_EXPERIMENTAL_SQLCLIENT_ENABLE_TRACE_CONTEXT_PROPAGATION.NET Framework only. Whether the SQLCLIENT instrumentation turns on context propagation to the SQL Server.falseExperimental
OTEL_DOTNET_AUTO_SQLCLIENT_NETFX_ILREWRITE_ENABLED[2]falseExperimental

[1]: This feature is supported only by packages 23.26.200 and newer. It also requires an Oracle AI Database 26ai server.

[2]: Enables IL rewriting of SqlCommand on .NET Framework to ensure CommandText is present for SqlClient instrumentation, which is required for db.query.text and db.query.summary to be populated. Previously, CommandText was only available for stored procedures. With this setting enabled, it is also available for raw queries. This changes the behavior of events emitted by the SqlEventSource, which might impact other parts of the application if this mechanism is used.

[3]: The OpenTelemetry Collector Contrib PostgreSQL receiver exposes the value as postgresql.application_name on its db.server.query_sample event. Query-sample collection is disabled by default and requires pg_monitor; see the pinned receiver configuration. Propagation executes SET application_name through Npgsql’s synchronous ExecuteInternalCommand path before each traced operation. Npgsql flushes that command and waits for its CommandComplete and ReadyForQuery responses, so propagation adds one database round trip per traced operation. It does not alter, prefix, or combine the application’s SQL. As Npgsql ends the user action, while it still owns the connector, the instrumentation executes RESET application_name through the same path. This adds one cleanup round trip per propagated operation and resets the value to the session default configured when the connection was opened before control returns to the caller or the connector can be used for another operation. PostgreSQL RESET does not restore a value assigned later with SET; enabling this option can therefore overwrite changes made by application code to application_name at runtime. See Npgsql’s EndUserAction lifecycle. These internal commands use PostgreSQL’s Simple Query flow, which discards the previous unnamed statement and portal; Npgsql’s explicitly prepared and automatically prepared statements are named and remain associated with the physical connection. See the PostgreSQL extended-query protocol rules and Npgsql’s prepared-statement documentation. Because SET and RESET are real PostgreSQL statements, an observer polling during their short execution can theoretically sample them. Cleanup is deferred while a transaction is failed so that ROLLBACK can run first, then executed as the recovery action ends successfully. Npgsql 10+ COPY operations are covered through its TraceCopyStart lifecycle. Multiplexing is not supported: application_name is physical-session state, while Npgsql can write multiple logical commands to the same connector in one multiplexing loop. The instrumentation safely skips propagation and logs one warning when it detects a multiplexed connector.


Востаннє змінено September 23, 2026: Update docs after OTel .NET Auto 1.17.0 release (#11819) (352930da)