Available instrumentations

OpenTelemetry .NET Automatic Instrumentation supported libraries.

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 are in Experimental status due to lack of stable semantic convention.

IDInstrumented librarySupported versionsInstrumentation typeStatus
ASPNETASP.NET (.NET Framework) MVC / WebApi [1] Not supported on .NET*source & bytecodeExperimental
ASPNETCOREASP.NET Core Not supported on .NET Framework*sourceExperimental
AZUREAzure SDK[2]sourceExperimental
ELASTICSEARCHElastic.Clients.Elasticsearch≥8.0.0 & < 8.10.0sourceExperimental
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
QUARTZQuartz Not supported on .NET Framework 4.7.1 and older≥3.4.0sourceExperimental
MASSTRANSITMassTransit Not supported on .NET Framework≥8.0.0sourceExperimental
MONGODBMongoDB.Driver.Core≥2.13.3 & < 3.0.0source & bytecodeExperimental
MYSQLCONNECTORMySqlConnector≥2.0.0sourceExperimental
MYSQLDATAMySql.Data Not supported on .NET Framework≥8.1.0sourceExperimental
NPGSQLNpgsql≥6.0.0sourceExperimental
NSERVICEBUSNServiceBus≥8.0.0source & bytecodeExperimental
SQLCLIENTMicrosoft.Data.SqlClient and System.Data.SqlClient* [3]sourceExperimental
STACKEXCHANGEREDISStackExchange.Redis Not supported on .NET Framework≥2.0.405 < 3.0.0source & bytecodeExperimental
WCFCLIENTWCF*source & bytecodeExperimental
WCFSERVICEWCF Not supported on .NET.*source & bytecodeExperimental

[1]: Only integrated pipeline mode is supported.

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

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

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 [2] Not supported on .NET FrameworkASP.NET Core metrics*sourceExperimental
HTTPCLIENTSystem.Net.Http.HttpClient and System.Net.HttpWebRequestHttpClient metrics*sourceExperimental
NETRUNTIMEOpenTelemetry.Instrumentation.RuntimeRuntime metrics*sourceExperimental
PROCESSOpenTelemetry.Instrumentation.ProcessProcess metrics*sourceExperimental
NSERVICEBUSNServiceBusNServiceBus metrics≥8.0.0source & bytecodeExperimental

[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.

IDInstrumented librarySupported versionsInstrumentation typeStatus
ILOGGERMicrosoft.Extensions.Logging Not supported on .NET Framework≥6.0.0bytecode or sourceExperimental

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 variableDescriptionDefault valueStatus
OTEL_DOTNET_AUTO_GRAPHQL_SET_DOCUMENTWhether GraphQL instrumentation can pass raw queries as graphql.document attribute. This may contain sensitive information and therefore is disabled by default.falseExperimental