Available instrumentations
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 variable | Description | Default value | Status |
|---|---|---|---|
OTEL_DOTNET_AUTO_INSTRUMENTATION_ENABLED | Enables all instrumentations. | true | Experimental |
OTEL_DOTNET_AUTO_TRACES_INSTRUMENTATION_ENABLED | Enables all trace instrumentations. Overrides OTEL_DOTNET_AUTO_INSTRUMENTATION_ENABLED. | Inherited from the current value of OTEL_DOTNET_AUTO_INSTRUMENTATION_ENABLED | Experimental |
OTEL_DOTNET_AUTO_TRACES_{0}_INSTRUMENTATION_ENABLED | Configuration 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_ENABLED | Experimental |
OTEL_DOTNET_AUTO_METRICS_INSTRUMENTATION_ENABLED | Disables all metric instrumentations. Overrides OTEL_DOTNET_AUTO_INSTRUMENTATION_ENABLED. | Inherited from the current value of OTEL_DOTNET_AUTO_INSTRUMENTATION_ENABLED | Experimental |
OTEL_DOTNET_AUTO_METRICS_{0}_INSTRUMENTATION_ENABLED | Configuration 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_ENABLED | Experimental |
OTEL_DOTNET_AUTO_LOGS_INSTRUMENTATION_ENABLED | Disables all log instrumentations. Overrides OTEL_DOTNET_AUTO_INSTRUMENTATION_ENABLED. | Inherited from the current value of OTEL_DOTNET_AUTO_INSTRUMENTATION_ENABLED | Experimental |
OTEL_DOTNET_AUTO_LOGS_{0}_INSTRUMENTATION_ENABLED | Configuration 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_ENABLED | Experimental |
Traces instrumentations
Status: Mixed. Traces are stable, but particular instrumentation libraries are in Experimental status due to lack of stable semantic convention.
| ID | Instrumented library | Supported versions | Instrumentation type | Status |
|---|---|---|---|---|
ASPNET | ASP.NET (.NET Framework) MVC / WebApi [1] Not supported on .NET | * [2] | source & bytecode | Experimental |
ASPNETCORE | ASP.NET Core Not supported on .NET Framework | * | source | Experimental |
AZURE | Azure SDK | [3] | source | Experimental |
ELASTICSEARCH | Elastic.Clients.Elasticsearch | * [4] | source | Experimental |
ELASTICTRANSPORT | Elastic.Transport | ≥0.4.16 | source | Experimental |
ENTITYFRAMEWORKCORE | Microsoft.EntityFrameworkCore Not supported on .NET Framework | ≥6.0.12 | source | Experimental |
GRAPHQL | GraphQL Not supported on .NET Framework | ≥7.5.0 | source | Experimental |
GRPCNETCLIENT | Grpc.Net.Client | ≥2.52.0 & < 3.0.0 | source | Experimental |
HTTPCLIENT | System.Net.Http.HttpClient and System.Net.HttpWebRequest | * | source | Experimental |
KAFKA | Confluent.Kafka | ≥1.4.0 & < 3.0.0 [5] | bytecode | Experimental |
MASSTRANSIT | MassTransit Not supported on .NET Framework | ≥8.0.0 | source | Experimental |
MONGODB | MongoDB.Driver.Core / MongoDB.Driver | ≥2.7.0 < 4.0.0 | bytecode | Experimental |
MYSQLCONNECTOR | MySqlConnector | ≥2.0.0 | source | Experimental |
MYSQLDATA | MySql.Data Not supported on .NET Framework | ≥8.1.0 | source | Experimental |
NPGSQL | Npgsql | ≥6.0.0 | source | Experimental |
NSERVICEBUS | NServiceBus | ≥8.0.0 & < 10.0.0 | source & bytecode | Experimental |
ORACLEMDA | Oracle.ManagedDataAccess.Core and Oracle.ManagedDataAccess Not supported on ARM64 | ≥23.4.0 | source | Experimental |
RABBITMQ | RabbitMQ.Client | ≥6.0.0 | source or bytecode [6] | Experimental |
QUARTZ | Quartz Not supported on .NET Framework 4.7.1 and older | ≥3.4.0 | source | Experimental |
SQLCLIENT | Microsoft.Data.SqlClient, System.Data.SqlClient [7] and System.Data (shipped with .NET Framework) | * [8] | source | Experimental |
STACKEXCHANGEREDIS | StackExchange.Redis Not supported on .NET Framework | ≥2.6.122 & < 3.0.0 | source & bytecode | Experimental |
WCFCLIENT | WCF | * | source & bytecode | Experimental |
WCFSERVICE | WCF Not supported on .NET. | * | source & bytecode | Experimental |
[1]: Only integrated pipeline mode is supported.
[2]: ASP.NET (.NET Framework) MVC / WebApi is not supported on ARM64.
[3]: Azure. prefixed packages, released after October 1, 2021.
[4]: Elastic.Clients.Elasticsearch version ≥8.0.0 and <8.10.0. Version
≥8.10.0 is supported by Elastic.Transport instrumentation.
[5]: Confluent.Kafka is supported from version ≥1.8.2 on ARM64.
[6]: RabbitMq.Client needs bytecode instrumentation only for 6.. versions
7.0.0+ uses only source instrumentation.
[7]: System.Data.SqlClient is
deprecated.
[8]: Microsoft.Data.SqlClient v3.* is not supported on .NET Framework, due
to issue.
System.Data.SqlClient is supported from version 4.8.5.
Metrics instrumentations
Status: Mixed. Metrics are stable, but particular instrumentation are in Experimental status due to lack of stable semantic convention.
| ID | Instrumented library | Documentation | Supported versions | Instrumentation type | Status |
|---|---|---|---|---|---|
ASPNET | ASP.NET Framework [1] Not supported on .NET | ASP.NET metrics | * | source & bytecode | Experimental |
ASPNETCORE | ASP.NET Core Not supported on .NET Framework | ASP.NET Core metrics | * | source | Experimental |
HTTPCLIENT | System.Net.Http.HttpClient and System.Net.HttpWebRequest | HttpClient metrics | * | source | Experimental |
NETRUNTIME | OpenTelemetry.Instrumentation.Runtime | Runtime metrics | * | source | Experimental |
NPGSQL | Npgsql Not supported on .NET Framework | Npgsql metrics | ≥6.0.0 | source | Experimental |
NSERVICEBUS | NServiceBus | NServiceBus metrics | ≥8.0.0 & < 10.0.0 | source & bytecode | Experimental |
PROCESS | OpenTelemetry.Instrumentation.Process | Process metrics | * | source | Experimental |
SQLCLIENT | Microsoft.Data.SqlClient, System.Data.SqlClient [2] and System.Data (shipped with .NET Framework) | SqlClient metrics | * [3] | source | Experimental |
[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.
| ID | Instrumented library | Supported versions | Instrumentation type | Status |
|---|---|---|---|---|
ILOGGER | Microsoft.Extensions.Logging Not supported on .NET Framework | ≥9.0.0 | bytecode or source [1] | Experimental |
LOG4NET | log4net | ≥2.0.13 && < 4.0.0 | bytecode | Experimental |
[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.
Instrumentation options
| Environment variable | Description | Default value | Status |
|---|---|---|---|
OTEL_DOTNET_AUTO_ENTITYFRAMEWORKCORE_SET_DBSTATEMENT_FOR_TEXT | Whether 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. | false | Experimental |
OTEL_DOTNET_AUTO_GRAPHQL_SET_DOCUMENT | Whether the GraphQL instrumentation can pass raw queries through the graphql.document attribute. Queries might contain sensitive information. | false | Experimental |
OTEL_DOTNET_AUTO_ORACLEMDA_SET_DBSTATEMENT_FOR_TEXT | Whether 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. | false | Experimental |
OTEL_DOTNET_AUTO_SQLCLIENT_SET_DBSTATEMENT_FOR_TEXT | Whether 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. | false | Experimental |
OTEL_DOTNET_AUTO_TRACES_ASPNET_INSTRUMENTATION_CAPTURE_REQUEST_HEADERS | A 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_HEADERS | A 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_HEADERS | A 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_HEADERS | A 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_METADATA | A 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_METADATA | A 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_HEADERS | A 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_HEADERS | A 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_REDACTION | Whether the ASP.NET Core instrumentation turns off redaction of the url.query attribute value. | false | Experimental |
OTEL_DOTNET_EXPERIMENTAL_HTTPCLIENT_DISABLE_URL_QUERY_REDACTION | Whether the HTTP client instrumentation turns off redaction of the url.full attribute value. | false | Experimental |
OTEL_DOTNET_EXPERIMENTAL_ASPNET_DISABLE_URL_QUERY_REDACTION | Whether the ASP.NET instrumentation turns off redaction of the url.query attribute value. | false | Experimental |
Feedback
Was this page helpful?
Thank you. Your feedback is appreciated!
Please let us know how we can improve this page. Your feedback is appreciated!