Today, we are happy to announce that the OpenTelemetry .NET SDK has reached beta. This means that you can now begin integrating the OpenTelemetry .NET SDK into your applications and libraries to capture and export metrics and traces.
Our beta, as pointed out in the previous post, had been delayed to ensure a smooth integration between OpenTelemetry and .NET Activity API. This post highlighted a collaboration between the OpenTelemetry .NET community and the .NET team at Microsoft, with the goal of having an OpenTelemetry-compatible API as part of the .NET runtime itself. This workstream is now complete, and starting with this release, .NET Activity API can be used as the OpenTelemetry Tracing API.
The new official recommendation from the OpenTelemetry .NET community is to use the .NET Activity API as OpenTelemetry Tracing API. This allows users to produce OpenTelemetry compatible traces, by using a platform standard API without taking any external dependencies. The .NET Activity API is shipped as part of the System.Diagnostics.DiagnosticSource package, and can be used in all supported .NET versions — including .NET Framework 4.5.2 and above; .NET Core 2.1 and above.
For users who are already familiar with OpenTelemetry terminology and want to stick to it, the OpenTelemetry API package provides a compatibility layer. This layer, built as a thin layer on top of the .NET Activity, exposes OpenTelemetry specification primitives such as Span. A detailed comparison of OpenTelemetry Trace API and .NET Activity API is available here.
This beta release brings the following:
- OpenTelemetry SDK, which can be used along with .NET Activity API or with the OpenTelemetry API.
- Instrumentation libraries for ASP.NET, ASP.NET Core, HTTP client, SQL client, and gRPC client.
- Trace Exporters to Jaeger, Zipkin, and OpenTelemetry Protocol (OTLP).
- Metric Exporter to Prometheus.
- Documentation for each component including getting started guides.
As with all beta releases, here are a few things to keep in mind:
- In the upcoming weeks, OpenTelemetry .NET will undergo several beta releases — this is simply the first.
- While functional, beta components have not gone through thorough testing or bench marking and are not recommended for production workloads.
- Breaking changes to both functionality and the API are expected between beta and General Availability (GA). Release notes in our repository will highlight the changes with each release.
- Any missing functionality will be added in subsequent beta releases.
- While .NET exposes an OpenTelemetry compatible Tracing API, it does not yet expose a OpenTelemetry compatible Metrics API. Currently, users will be required to use the OpenTelemetry API package to emit metrics. With continued collaboration with the .NET team, we aim to bridge this gap and incorporate an OpenTelemetry-compatible Metrics API as part of .NET itself, in the .NET 6 time frame.
- System.Diagnostics.DiagnosticSource NuGet package is a preview package and won’t be generally available until Nov 2020.
This beta milestone is a huge accomplishment for the OpenTelemetry community, and every contributor should be proud of the fact that OpenTelemetry .NET is now working and ready for usage. Additionally, while the beta was delayed, OpenTelemetry .NET SDK is still on track and is expected to be Generally Available (GA) for consumption, by the end of this year.
Between now and GA lies a great opportunity for:
- Maintainers of client libraries to begin instrumenting with .NET Activity APIs
- End-users to start integrating this into their services