Skip to content

Latest commit

 

History

History
121 lines (97 loc) · 24.5 KB

instrumentation-libraries.md

File metadata and controls

121 lines (97 loc) · 24.5 KB

Support for OpenTelemetry Instrumentation Libraries

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.

Libraries and our instrumentation support plans

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.

Application Frameworks

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.

Databases

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 Partial1 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 Yes 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 Yes 23.4.0+ only. Older versions do not have native OpenTelemetry support.
Oracle.ManagedDataAccess Yes 23.4.0+ only. Older versions do not have native OpenTelemetry support.
AWSSDK.DynamoDBv2
Microsoft.Azure.Cosmos

Inter-process communication (IPC)

Library Tracing Support Metrics Support Notes
HttpClient Yes Yes
HttpWebRequest Yes Yes
WCF Yes (Client adn Service side on .NET Framework)
CoreWCF
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 Partial1
GraphQL Client
RabbitMQ These is an issue in the RabbitMQ repo to add instrumentation directly into RabbitMQ.
Kafka
NServiceBus Yes Yes
MassTransit Yes

Logging

TODO: Determine how we want to support logging.

  1. Log4net
  2. Microsoft.Extensions.Logging
  3. Serilog
  4. NLog
  5. Common.Logging

Other

Library Tracing Support Metrics Support Notes
Microsoft.Extensions.Caching TODO: Evaluate if this is desired.

Cloud Environments and SDKs

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.

Libraries we should not 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

  1. Not supported on .NET framework. 2 3 4 5

  2. Only Grpc.Net.Client is supported.