open-telemetry / opentelemetry-dotnet

The OpenTelemetry .NET Client

Home Page:https://opentelemetry.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Metric support plans

cijothomas opened this issue · comments

Background

OpenTelemetry .NET SDK currently has a basic implementation of the Metric API. This was written as a prototype (when Metrics Specs were in early stages), and is not recommended for any production scenarios.

The OpenTelemetry specification for Metrics SDK is a work-in-progress, and has not declared stable.

OpenTelemetry .NET SDK currently plans to release v1.0.0 the tracing/context/baggage signals by Jan/Feb 2021. As the Metric API/SDK is part of same package as other stable signals, all Metric API/SDK will be removed from the 1.0.0 release, and will be released as a separate, pre-release version (like 1.1.0-alpha1). Once Metrics spec is declared stable, there will be a stable release (like 1.2.0) which adds Metrics support.

OpenTelemetry .NET Metric plans

OpenTelemetry .NET SIG has previously collaborated with .NET runtime team on the Activity API, which was enhanced to be compatible with OpenTelemetry Tracing API. We expect to continue to collaborate with .NET runtime team for Metrics work as well. .NET runtime team has already announced plans to provide a OpenTelemetry compatible Metric API in the .NET Runtime itself.

Timeline

The next major release from .NET is .NET 6 which is expected to GA on Nov 2021. As OpenTelemetry .NET Metrics will be built on top of Metric API exposed by .NET runtime, OpenTelemetry .NET Metric will also GA at Nov 2021. Starting June 2021, there will be preview releases. Even though the Metric support is releasing along with .NET6, the actual API will be an out-of-band package, similar to System.Diagnostics.DiagnosticSource package, and is expected to support all officially supported versions of .NET Core and .NET Framework.(except .NET Framework older than 4.6.2)

Ask from the community

While we are happy to always receive feedback on all the areas, we are especially looking for feedback on following:

  • EventCounter Feedback

.NET already has a basic Metric API called EventCounters. The new Metric API may/may not be compatible with EventCounters. We are looking for feedback about your usage of EventCounters. Specifically,
Are you using EventCounters in any way in your applications?
If yes, are you simply consuming EventCounters?
If yes, are you consuming EventCounters published by components in .NET Ecosystem (eg: .NET Runtime, Asp.Net Core etc.) or by libraries other than the ones shipped by Microsoft/.NET.
Are you publishing Metrics using EventCounters?

Please use this issue to share feedback about EventCounters.

  • Metric API in .NET Runtime feedback
    .NET just announced plans to support OpenTelemetry compatible metrics API.
    Use .NET Runtime to share feedback about .NET implementation of the Metric API. This is in early planning stage now, and more details will be shared by Feb 2021.

If there is a feedback about the OpenTelemetry Metric API itself, its best to discuss it in OpenTelemetry specification repo, as .NET will be implementing a spec compatible API only.

  • OpenTelemetry .NET Metric API/SDK feedback
    If you have questions/concerns about anything related to OpenTelemetry .NET (Yes, thats this repo itself!) and new metrics plan shared above specifically, please comment in this issue. For anything about the current to-be-marked-obsolete Metric API/SDK in this repo, please open a separate issue.

Update:
We have released 4 alpha versions (1.2.0-alpha1/2/3/4) which contains the Metric support.
Starting this week, we'll be releasing beta versions, and RC version early Nov. The goal is to release 1.2.0 as stable by Nov, assuming the spec gets marked stable.

Is there any sort of enumerated list of remaining features?

Is there any sort of enumerated list of remaining features?

Will create one soon and mark with milestones as well.

Update: A release candidate version (1.2.0-rc1) is available now.
Planning the stable release in next couple days, assuming spec gets stable.
https://github.com/open-telemetry/opentelemetry-dotnet/milestone/22

Is there any sort of enumerated list of remaining features?

Will create one soon and mark with milestones as well.

This is the official compliance matrix:
https://github.com/open-telemetry/opentelemetry-specification/blob/main/spec-compliance-matrix.md#metrics

For quick reference, here's what we are missing:

  1. UpDownCounter/ObservableUpDownCounter - trying to make it happen in .NET runtime itself. See #2362
  2. Advanced view configuration (to change aggregation itself, add more attributes/tags from Baggage) - #2619, #2618
  3. Exemplars #2527
  4. MinMax for Histograms #2560
  5. Exponential Histograms (spec is still experimental)

Do you have any plans to add other metrics exporters, for example exporting to InfluxDB?

Do you have any plans to add other metrics exporters, for example exporting to InfluxDB?

Only exporters listed here (https://github.com/open-telemetry/opentelemetry-specification/tree/main/specification/metrics/sdk_exporters) would be part of this repo. Though anyone can contribute more exporters in the https://github.com/open-telemetry/opentelemetry-dotnet-contrib repo, we can help with reviews.

Update: 1.2.0-rc2 got released (with huge perf improvement for Metrics)
1.2.0 stable, as soon as spec for Metrics SDK is stable.