On Monday, 23 June 2025 at 14:31:34 UTC+1 tejaswini vadlamudi wrote:

but with histograms, mainly with Native Histograms, is there a possibility 
to get Max and Min values for a period of time?


No.  If that's not clear from my explanations so far, then I have not done 
a very good job.
 


With OTEL-based metrics instrumentation, it is possible to record max and 
min values. See 
https://opentelemetry.io/docs/specs/otel/metrics/data-model/#histogram


Please read the link I posted before:
https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/33645
especially the last comment:
https://github.com/open-telemetry/opentelemetry-collector-contrib/issues/33645#issuecomment-2514894327

The OTEL histogram's way of reporting max/min values are not compatible 
with Prometheus. Prometheus histograms are cumulative: that is, they never 
reset. They are just counters which keep incrementing forever. If they had 
a min/max then it would be the min/max over all time, which is not useful.

You can create a separate timeseries for min/max, but it would not be part 
of the histogram. It would either have to be min/max over successive 
timeslots (e.g. 1 minute intervals), or min/max over a sliding window 
(which is expensive, as you've have to buffer all the samples for that time 
window).

> I think  histogram_quantile(0, rate(http_request_duration_seconds[1m])) 
will give me min value. Is it correct?

No, it's not. Again, it seems I have not been explaining this well.

Let's say your histogram buckets are:

0-10ms (le="0.01")
10-20ms (le="0.02")
20-30ms (le="0.03")
30-40ms (le="0.04")
40-50ms (le="0.05")
50ms+ (le="inf")

A sample comes in with request time of 12.3ms, and this is the fastest over 
the time period of interest.

All this does is add 1 to the 10-20ms bucket (counter) in the histogram. 
The actual value of 12.3ms is LOST.  The only thing you will know from 
looking at the histogram is that the 10-20ms bucket has incremented, but 
the 0-10ms bucket has not, and therefore the minimum value is somewhere 
between 10ms and 20ms.  If you use the histogram_quantile(0...) formula you 
showed, the answer will be "0.01", which I also explained previously with a 
worked example. This tells you "the minimum value is at least 10ms" - and 
implicitly not more than 20ms, as that's where the next bucket starts.

I think I had better hand over to someone else now.

-- 
You received this message because you are subscribed to the Google Groups 
"Prometheus Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/prometheus-users/3e31540a-c1cf-4601-8412-b06ed5c0e810n%40googlegroups.com.

Reply via email to