See also 
https://prometheus.io/docs/specs/native_histograms/#opentelemetry-interoperability

I note that native histograms have exponentially-varying sizes. In 
principle, if you set the factors appropriately (e.g. say scaling of 1.1 = 
each bucket is 10% larger than the next) then the answers you get for min 
and max should be within 10% of the actual answer. But you won't get the 
*exact* minimum or maximum which is what you were asking for.

On Monday, 23 June 2025 at 22:13:56 UTC+1 Brian Candler wrote:

> 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/dab2ab1c-2cf9-4a28-91bc-6c7a8c4dddffn%40googlegroups.com.

Reply via email to