OpenTelemetry instrumentation is implemented using a variety of techniques. Sometimes the instrumentation is built directly into the instrumented library, sometimes the instrumentation requires the addition of a separate instrumentation library, and other times it is a hybrid of those approaches. This project aims to make using these instrumentation approaches easier and more automatic for our users. This requires us to both vet and dynamically enable a subset of the instrumentation that is available to the OpenTelemetry community, while still providing some flexibility to allow users to manually load and enable instrumentation that we do not support out of the box.
The libraries listed here contain our current thoughts about which libraries should include out of the box support, and which libraries we decided to not support. If you have a library that you would like to consider adding to this list, please submit an issue to request its inclusion.
Framework | Tracing Support | Metrics Support | Notes |
---|---|---|---|
ASP.NET | Yes | Yes | |
ASP.NET Core | Yes | Yes | |
Windows Workflow Foundation | This is .NET Framework only. There is an experimental port for .NET 6. | ||
OWIN | This is .NET Framework only. |
Library | Tracing Support | Metrics Support | Databases Tested | Notes |
---|---|---|---|---|
Entity Framework | Needs investigation. It might be implicitly supported based on the configured database provider. | |||
Entity Framework Core | Needs investigation. It might be implicitly supported based on the configured database provider. | |||
Dapper | Needs investigation. It might be implicitly supported based on the configured database provider. | |||
Microsoft.Data.SqlClient | Yes | MS SQL Server | ||
System.Data.SqlClient | Yes | |||
MySql.Data | Partial1 | This is the official MySQL library. | ||
MySqlConnector | Seems to be the recommended library for MariaDB. | |||
Npgsql | Yes | PostgreSQL | ||
Microsoft.Data.SqlLite | ||||
MongoDB.Driver | Partial1 | MongoDB | ||
StackExchange.Redis | Partial1 | |||
Elasticsearch-net | Yes | 8.0.0+ only. Older versions do not have native OpenTelemetry support. | ||
Oracle.ManagedDataAccess.Core | ||||
Oracle.ManagedDataAccess | ||||
AWSSDK.DynamoDBv2 | ||||
Microsoft.Azure.Cosmos |
Library | Tracing Support | Metrics Support | Notes |
---|---|---|---|
HttpClient | Yes | Yes | |
HttpWebRequest | Yes | Yes | |
WCF | See issue 946 | Server and client support should be added. | |
CoreWCF | See issue 946 | Server and client support should be added. | |
RestSharp | This library may be implicitly supported by instrumenting the underlying HttpClient or HttpWebRequest. | ||
gRPC-dotnet | Partial2 | Client and service support should be added. | |
GraphQL | Yes | The current instrumentation needs updates to match the semantic conventions. | |
GraphQL Client | |||
RabbitMQ | These is an issue in the RabbitMQ repo to add instrumentation directly into RabbitMQ. | ||
Kafka | |||
NServiceBus | |||
MassTransit | Yes |
TODO: Determine how we want to support logging.
Library | Tracing Support | Metrics Support | Notes |
---|---|---|---|
Microsoft.Extensions.Caching | TODO: Evaluate if this is desired. |
TODO: Determine appropriate resource detectors and AWS SDK related instrumentation libraries to support.
TODO: Determine appropriate resource detectors and Azure SDK related instrumentation libraries to support. This should also include support for frameworks like Azure Service Fabric.
TODO: Determine appropriate resource detectors and GCP SDK related instrumentation libraries to support.
Library | Notes |
---|---|
System.IO.Pipelines | This library is used for high-throughput scenarios and instrumenting this library could potentially impact the performance of the application in a negative manner. |
Pipelines.Sockets.Unofficial | This is a lower-level networking library and instrumenting it can affect the performance of an application in negative ways causing an increase in network traffic (as compared to the application running without instrumentation). |
System.Threading.Channels | This is a lower-level library and may not provide enough contextual information on its own. |
Cassandra | Low usage |
IBM DB2 | Low usage |
Couchbase | Low usage |
LINQ to SQL | Legacy technology and pattern. Wait until there is enough interest. |
Microsoft.Practices.EnterpriseLibrary.Data | Legacy technology and pattern. Wait until there is enough interest. |
Polly | Waiting for interest and further analysis. |
gRPC for C# | Library is deprecated. |
MSMQ | This is a legacy system. Wait until there is enough interest. |
Footnotes
-
Only Grpc.Net.Client is supported. ↩