Sourabh
Sourabh

Reputation: 59

How to calculate percentile using System.Diagnostics.Metrics.Histogram

I am trying to create pxx metrics using .Net Meter API. Below is the sample code

  System.Diagnostics.Metrics.MeterListener listener = new System.Diagnostics.Metrics.MeterListener
            {
                InstrumentPublished = (instrument, meterListener) =>
                {
                    if (instrument.Meter.Name == "ct")
                    {
                        Console.WriteLine($"{instrument.Name} : {instrument.Meter.Name}");
                        meterListener.EnableMeasurementEvents(instrument, null);
                    }
                }
            };
            listener.SetMeasurementEventCallback<long>(
                (instrument, measurement, tags, state) => {
                    KeyValuePair<string, object>[] tagsKv = tags.ToArray();
                    Console.WriteLine($"state => {state}");
                    foreach (KeyValuePair<string, object> tagKv in tagsKv)
                    {
                        Console.WriteLine($"tag => {tagKv.Key} :: {tagKv.Value}");
                    }
                    instrument.
                    Console.WriteLine($"Instrument: {instrument.Name} has recorded the measurement {measurement}");
            });

            listener.Start();

            System.Diagnostics.Metrics.Meter meter1 = new System.Diagnostics.Metrics.Meter("ct", "v1.0");
            System.Diagnostics.Metrics.Histogram<long> hist = meter1.CreateHistogram<long>(
                name: "Latency", 
                unit: "Ms");
            hist.Record(10);
            hist.Record(20);
            hist.Record(30);

I am able to see recorded values i.e. 10, 20, 30 in measurementEventCallback. But I want to calculate pxx (p99, p90 etc) from these values. How can I achieve that. I couldn't find any examples online.

Upvotes: 0

Views: 1835

Answers (1)

Sourabh
Sourabh

Reputation: 59

Short Summary: It is not supported by Meter API. Ref https://github.com/dotnet/runtime/issues/66592 for detailed answer.

Upvotes: 0

Related Questions