Sorry, unclear phrasing – I mean as the one scraping (whether by hand or as a Prometheus server), how would I know what the semantics of the value in the provided exemplar are, whether they are a delta or an absolute value? Again, I think "it's always an absolute value" makes this least surprising.
This overlaps with the discussion we had about exemplars from recording rules – if there was the option to have multiple exemplars for one gauge, it could separately present exemplars for increment, decrement, and set, whichever ones have been used … /MR On Wed, Dec 7, 2022 at 9:50 AM 'Fabian Stäber' via Prometheus Developers < [email protected]> wrote: > > At scrape time, how would I know which method was used? > > The library keeps a list of Exemplars that are provided at scrape time (in > case of a Gauge the list only has 1 element, because Gauges only have 1 > Exemplar). > > The question is what to put in the list when inc(), dec(), or set() are > called. > > My feeling is also that the total value of the gauge is least surprising. > But that would also mean that for cases like "number of Bytes in a queue" > you'd not see the number of Bytes added as an Exemplar value, just the > total queue size. > > Fabian > > On Wed, Dec 7, 2022 at 10:44 AM Matthias Rampke <[email protected]> > wrote: > >> At scrape time, how would I know which method was used? "always the total >> value of the gauge" seems like the least surprising choice to me. If users >> need to track separate exemplars for increment and decrement, they could >> use two counters (basically, a non-native UpDownCounter), which >> conceptually and physically preserves that the final value is the result of >> repeated additions and removals. >> >> /MR >> >> On Wed, Dec 7, 2022 at 7:58 AM 'Fabian Stäber' via Prometheus Developers < >> [email protected]> wrote: >> >>> Thanks Julien. I guess there are examples for both, having Exemplars >>> with the delta as well as the absolute value. >>> >>> Example 1) Number of Bytes in a queue. You would call >>> myGauge.inc(nBytes) if a message is added to the queue, and >>> myGauge.dec(nBytes) if a message is fetched from the queue. If adding / >>> fetching is done via REST API, it would make sense to have Exemplars for >>> the add/fetch operations. >>> >>> Example 2) An IoT device reaching out to a Web hook for reporting >>> temperature. To track the current temperature, you'd call >>> myGauge.set(temperature). If the IoT device is capable of adding trace >>> headers when calling the Web hook it would be good to have Exemplars of >>> these calls. >>> >>> The Java library supports automatic Exemplars, i.e. users don't call >>> explicit API to add Exemplars, but the library figures out if a current >>> trace context exists and samples Exemplars automatically under the hood. >>> For that, we need a default behavior. So what would a good default be? >>> Always the total value of the Gauge, or always the delta, or make it depend >>> on whether inc(), dec(), or set() was called? >>> >>> Fabian >>> >>> >>> On Tue, Dec 6, 2022 at 11:18 PM Julien Pivotto < >>> [email protected]> wrote: >>> >>>> On 06 Dec 23:06, 'Fabian Stäber' via Prometheus Developers wrote: >>>> > Hi, >>>> > >>>> > I'm experimenting with Exemplars for Gauge metrics in client_java >>>> > (background: at the dev summit on 10 November 2022 >>>> > < >>>> https://docs.google.com/document/d/11LC3wJcVk00l8w5P3oLQ-m3Y37iom6INAMEu2ZAGIIE/edit >>>> > >>>> > we decided that "Prometheus will ingest Exemplars on all time >>>> series"). >>>> > >>>> > For comparison: A counter MUST have the following methods >>>> > <https://prometheus.io/docs/instrumenting/writing_clientlibs/#counter >>>> >: >>>> > >>>> > - inc(): Increment the counter by 1 >>>> > - inc(double v): Increment the counter by the given amount. MUST >>>> check >>>> > that v >= 0. >>>> > >>>> > Exemplars will contain the increment, i.e. if inc() is called the >>>> Exemplar >>>> > will have the value 1.0, if inc(v) is called the Exemplar will have >>>> the >>>> > value v. >>>> > >>>> > Now, A gauge MUST have the following methods >>>> > <https://prometheus.io/docs/instrumenting/writing_clientlibs/#gauge>: >>>> > >>>> > - inc(): Increment the gauge by 1 >>>> > - inc(double v): Increment the gauge by the given amount >>>> > - dec(): Decrement the gauge by 1 >>>> > - dec(double v): Decrement the gauge by the given amount >>>> > - set(double v): Set the gauge to the given value >>>> > >>>> > Which value should we choose for Gauge Exemplars? >>>> >>>> That is a good question and my guess would be that it will depend on the >>>> use case. Do you have examples of gauges would would attach exemplars >>>> to? >>>> >>>> -- >>>> Julien Pivotto >>>> @roidelapluie >>>> >>> -- >>> 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/CAPX310ipsufix2s4_P4PXOvzGr4MFDbHaaBmmJZXpnW-k%2Bas6g%40mail.gmail.com >>> <https://groups.google.com/d/msgid/prometheus-developers/CAPX310ipsufix2s4_P4PXOvzGr4MFDbHaaBmmJZXpnW-k%2Bas6g%40mail.gmail.com?utm_medium=email&utm_source=footer> >>> . >>> >> -- > 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/CAPX310ggv%2BthbzFYx5j71B%2ByyOOy9d-64nPAa00-yNd6jcZbkQ%40mail.gmail.com > <https://groups.google.com/d/msgid/prometheus-developers/CAPX310ggv%2BthbzFYx5j71B%2ByyOOy9d-64nPAa00-yNd6jcZbkQ%40mail.gmail.com?utm_medium=email&utm_source=footer> > . > -- 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/CAMV%3D_gaT6_kDoK0TY6QvnMYZ5hrGiSAF_ee2eBgOBA5UuOQ1Ow%40mail.gmail.com.

