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 | ≥2.28.0 & < 3.0.0 | source & 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 & < 7.0.0 | bytecode | 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 and System.Data (shipped with .NET Framework) | * [6] | 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]: 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 [2] 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 |
PROCESS | OpenTelemetry.Instrumentation.Process | Process metrics | * | source | Experimental |
NSERVICEBUS | NServiceBus | NServiceBus metrics | ≥8.0.0 & < 10.0.0 | source & bytecode | Experimental |
[1]: The ASP.NET metrics are generated only if the AspNet
trace
instrumentation is also enabled.
[2]: This instrumentation automatically enables the
Microsoft.AspNetCore.Hosting.HttpRequestIn
spans.
Logs instrumentations
Status: Experimental.
ID | Instrumented library | Supported versions | Instrumentation type | Status |
---|---|---|---|---|
ILOGGER | Microsoft.Extensions.Logging Not supported on .NET Framework | ≥8.0.0 | bytecode or source | Experimental |
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!