Agree, but I wouldn't press this until we have NHCB implemented and stable
through the storage.

Nevertheless, I agree with @Bjoern Rabenstein <[email protected]> on the
provided sketched plan.

Kind Regards,
Bartek Płotka (@bwplotka)


On Sun, Sep 22, 2024 at 4:02 PM Jesús Vázquez <[email protected]> wrote:

> I had this in my queue for a long time, finally got to it!
>
> We typically write proposals for new things such as features or
> modifications but perhaps we could write a proposal for the deprecation of
> classic histograms and lay out the different strategies for getting there?
>
> Regards
>
> El mié, 12 jun 2024 a las 15:33, Bjoern Rabenstein (<[email protected]>)
> escribió:
>
>> Here is my idea for a deprecation plan:
>>
>> 1. On the server side, including PromQL:
>>
>> A future PromQL server should still be able to recognize classic
>> histograms when scraped, but only to convert them to native histograms
>> with custom buckets (NHCB). From that point on (storage, query, remote
>> write), it shoud have no notion of classic histograms anymore.
>>
>> This is also a reason why I think a "reverse transparency" layer to
>> query NHCB as if they were classic histograms is undesirable. We want
>> to get rid of the query patterns for classic histograms. (Another
>> reason is that it will be really hard to implement such a "reverse
>> transparency" layer reliably.)
>>
>>
>> 2. On the instrumentation side, including exposition formats:
>>
>> In direct instrumentation, if you need a histogram, you should default
>> to a native histogram with a standard exponential schema (which
>> guarantees mergeability across time and space and is compatible with
>> OTel's eponential histogram). Only if you need custom bucket
>> boundaries for some reason, you should use an NHCB. Generally, I think
>> the libraries can even keep their existing API for that. If you
>> instrument a histogram in the classic way, the API doesn't actually
>> tell you that this will result in a classic histogram. It just asks
>> you for the bucket boundaries, and then you call `Observe` as you do
>> for a native histogram, too. Hence, future libraries can just expose
>> an NHCB in that case.
>>
>> If you translate a histogram from a 3rd party source, you use a
>> suitable flavor of native histograms as the translation target. In the
>> unlikely case that the source histogram fits the exponential bucketing
>> schema, use a regular exponential native histogram. For specific types
>> of 3rd party histograms (e.g. DDSketch, but there are many more), we
>> might implement additional schemas of native histograms that directly
>> accommodate them. And finally, if nothing else fits, you do NHCB.
>>
>> The exposition formats of the future should be able to represent all
>> flavors of native histograms, so that we don't need to expose classic
>> histograms anymore.
>>
>> _However_, the existing Prometheus exposition formats are so
>> ubiquitious by now, that I don't think they will ever die. For as long
>> as technically feasible, Prometheus servers should be able to
>> understand old exposition formats. Which circles back to the very
>> beginning: Any Prometheus server should still understand classic
>> histograms, but convert them into NHCB on scrape.
>>
>> --
>> Björn Rabenstein
>> [PGP-ID] 0x851C3DA17D748D03
>> [email] [email protected]
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Prometheus Developers" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/prometheus-developers/Zmmjs%2BQen6u7brfz%40mail.rabenste.in
>> .
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Prometheus Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/prometheus-developers/CAMssQwauwuA2vs%3DMr9NsNiXhjQ%2BjVdBfrxjAD25EgcHA-YN8bQ%40mail.gmail.com.

Reply via email to