>>> Also, what do you think about supporting _count in Histograms (since 
Histogram extends Summary with buckets)?
>> How exactly would you change this while remaining backwards-compatible 
for existing users?
> As far as I can see, adding Exemplars to _count should be a 
backward-compatible change (it is an addition).

I would like to see what you can see.  Please spell it out for me.

The current API on Histogram is ObserveWithExemplar(), and it adds the 
exemplar to a _bucket metric.
Would you change the behaviour of that API?  Would you add a new API?  

Bryan

On Friday, 4 November 2022 at 05:46:39 UTC [email protected] wrote:

> Hi,
>
> Sorry for the late reply let me go on-by-one, please bear with me. :)
>
> *>I recommend taking that question to an OpenMetrics list.* 
> Thanks, I will open a thread there too based on the discussion here.
>
> *>Prometheus could independently decide to go beyond what OpenMetrics says*
> Since Micrometer uses the Prometheus Java Client this would solve the 
> issue for us but if it makes sense it would be great to have it 
> standardized later(?) (in OM).
>
> *>Maybe your point is that exemplars are tied to the _bucket metrics and 
> not the _count metric?*
> Yes, that's exactly what I'm saying with the caveat that I think this 
> would be useful for Summaries too not only Histograms.
>
> *>How exactly would you change this while remaining backwards-compatible 
> for existing users?*
> As far as I can see, adding Exemplars to _count should be a 
> backward-compatible change (it is an addition).
> Would users be broken because of this?
>
> *>Perhaps the upcoming "native histograms" or "sparse histograms" feature 
> will suit what you need?*
> I'm not sure but I'm not only talking about histograms, I'm also talking 
> about Summary.
>
> *>In an OM Histogram, the +Inf bucket fulfills exactly the same function*
>
>
> *as the _count (spec says: "The +Inf bucket counts all requests.") Soif 
> you would like an examplar on the _count of a Histogram, you can aswell use 
> an exemplar on the +Inf bucket.*
>
> I think I disagree with the second sentence. Let's say you have an 
> application where processing the first request is significantly slower than 
> the rest (lazy init, populating caches, GC, establishing connections, 
> etc.). In this environment (I think this is true for lots of apps nowadays) 
> it can easily happen that the +Inf bucket will be populated with an 
> Exemplar for the first request and it will never get updated because the 
> app will never be as slow as it was for the first request. Also, nothing 
> guarantees that the +Inf bucker will have an exemplar, maybe the processing 
> was faster than that. As far as I understand, exemplars are not like 
> cumulative "le" counters so incrementing a bucket does not mean updating an 
> exemplar (quite the opposite, maybe all of the buckets will be incremented 
> but only one will get a new Exemplar). This is also true for apps that can 
> get significantly faster over time (i.e.: JIT).  I think a solution here 
> would be give_me_the_last_updated_bucket(my_histogram) or adding Exemplar 
> to _count.
>
> *>Side note: In Java this would be particularly useful because the popular 
> Spring Boot framework exposes a Summary http_server_requests_seconds by 
> default that look like this (no quantiles, just _count and _sum)*
> This was actually one of the drivers of this request, users are asking for 
> this from us. I also find it extremely useful: without this I need to 
> create an additional counter which does not seem right since I already have 
> one.
>
> Thanks,
> Jonatan
>
> On Tuesday, October 18, 2022 at 6:29:27 AM UTC-7 [email protected] wrote:
>
>> Side note: In Java this would be particularly useful because the popular 
>> Spring Boot framework exposes a Summary http_server_requests_seconds by 
>> default that look like this (no quantiles, just _count and _sum):
>>
>> # HELP http_server_requests_seconds  
>> # TYPE http_server_requests_seconds summary
>> http_server_requests_seconds_count{exception="None",method="GET",outcome="SUCCESS",status="200",uri="/",}
>>  1.0
>> http_server_requests_seconds_sum{exception="None",method="GET",outcome="SUCCESS",status="200",uri="/",}
>>  1.014687278
>>
>> I think this is pretty useful, you can get request rates and error rates 
>> out of it. If Prometheus / OpenMetrics had support for Exemplars on the 
>> _count, users could find example traces per HTTP status and URI.
>>
>> Fabian
>>
>> On Tue, Oct 18, 2022 at 3:05 PM Bjoern Rabenstein <[email protected]> 
>> wrote:
>>
>>> On 06.10.22 14:45, 'Fabian Stäber' via Prometheus Developers wrote:
>>> > 
>>> > Great question from the CNCF Slack: What's the reason why we don't 
>>> allow 
>>> > Exemplars for _count in Summary metrics?
>>> > 
>>> > What do you think? Any reason why Exemplars don't work in _count in 
>>> > Summaries? Would that be something we could consider supporting?
>>>
>>> The _count of a Summary _and_ the _count of a Histogram (both
>>> conventional as well as the new native ones) is essentially a counter
>>> within the larger "structured" metric of a Summary/Histogram.
>>>
>>> From that perspective, it should have the option of attaching an
>>> examplar, as a regular Counter has, too.
>>>
>>> My speculation why it doesn't in OpenMetrics:
>>>
>>> In an OM Histogram, the +Inf bucket fulfills exactly the same function
>>> as the _count (spec says: "The +Inf bucket counts all requests.") So
>>> if you would like an examplar on the _count of a Histogram, you can as
>>> well use an exemplar on the +Inf bucket.
>>>
>>> That obviously doesn't help in the case of a Summary, but I guess the
>>> rationale is that Histograms are generally to be preferred over
>>> Summaries, and therefore didn't get the thourough treatment when it
>>> came to exemplars.
>>>
>>>
>>> However, even if you really dislike the precalculated quantiles in
>>> Summaries, there is still the case of a Summary without quantiles. I
>>> think adding exemplars to such a Summary is as much needed as adding
>>> exemplars to any regular Counter.
>>>
>>> -- 
>>> 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/a34c406a-b4ec-419b-bc69-56f32fc5f690n%40googlegroups.com.

Reply via email to