open-telemetry / opentelemetry-dotnet

The OpenTelemetry .NET Client

Home Page:https://opentelemetry.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

OpenTelemetry-dotnet: Support for true Delta UpDownCounters & ObservableGauges

abhishek8 opened this issue · comments

Discussed in #5753

Originally posted by abhishek8 July 17, 2024
Hi, I have just started using OpenTelemetry with .NET. I have a use case where I need to log specific data points, such as success and failure counts in the application. To avoid data duplication, I am using Delta temporality preference. While I’ve been successful with regular counters, I’m still encountering duplicate data issues with UpDownCounters and ObservableGauges. Can you fix delta temporality to work properly in case of UpdownCounters and ObservableGauges as well?

Below sample code for the same,

using var meterProvider = Sdk.CreateMeterProviderBuilder()
    .AddMeter("MyCompany.MyProduct.MyLibrary")
    .AddConsoleExporter((options, readerOptions) =>
    {
        readerOptions.TemporalityPreference = MetricReaderTemporalityPreference.Delta;
    })
    .Build();

var abc = new Main();
abc.Execute();

internal class Main
{
    private readonly Meter _meter = new("MyCompany.MyProduct.MyLibrary");

    public void Execute()
    {
        Console.WriteLine("Started...");

        _meter.CreateCounter<long>("MyFruitCounter_v1")
            .Add(3, new("name", "apple"), new("color", "red"), new("uid", "9161"));

        _meter.CreateUpDownCounter<long>("MyFruitGauge_v1")
            .Add(3, new("name", "apple"), new("color", "red"), new("uid", "9161"));

        Console.WriteLine("Logged values!");

        while (!Console.KeyAvailable)
        {
            Thread.Sleep(1000);
        }
    }
}
OpenTelemetry_Duplicate