On 21 Nov 15:34, Ben Kochie wrote: > While that sounds like a good idea, it's going to produce less accurate > results for most use cases.
It was agreed on previous dev summit that we would look into how we can improve rate() alike functions. I don't think anyone has started on this yet. > > On Sat, Nov 21, 2020 at 3:15 PM Aliaksandr Valialkin <[email protected]> > wrote: > > > There is an alternative solution - to use the increase() function from > > MetricsQL - it doesn't extrapolate results and it takes into account the > > previous value before the window in square brackets. So it returns exact > > expected values. See more details at > > https://victoriametrics.github.io/MetricsQL.html > > > > On Fri, Nov 20, 2020 at 2:49 PM [email protected] <[email protected]> > > wrote: > > > >> On Friday, 20 November 2020 at 02:29:12 UTC [email protected] wrote: > >> > >>> *Query*: > >>> 1. normal query: error_counter_something{job=“monitor”, device=“dev0”, > >>> serial=“xxxxxxxx”} > >>> 2. delta query: delta(error_counter_something{job=“monitor”, > >>> device=“dev0”, serial=“xxxxxxxx”}[$__interval] > 0) > >>> > >>> *Time Range*: 2020-11-19 16:16:00 ~ 2020-11-19 16:20:00 with 15sec > >>> interval > >>> > >>> *result* > >>> > >>> 16:16:15~30 raise 2 errors on device and move that error counter value > >>> from 7616 to 7618, > >>> but the delta query shows result of 3 > >>> > >>> time , delta , > >>> normal > >>> 2020-11-19 16:16:00, , 7616 > >>> 2020-11-19 16:16:15, , 7616 > >>> 2020-11-19 16:16:30, 3, 7618 > >>> 2020-11-19 16:16:45, , 7618 > >>> 2020-11-19 16:17:00, , 7618 > >>> (keep these value until end of query time range) > >>> > >>> > >> See > >> https://prometheus.io/docs/prometheus/latest/querying/functions/#delta > >> *"delta(v range-vector) calculates the difference between the first and > >> last value of each time series element in a range vector v, returning an > >> instant vector with the given deltas and equivalent labels. The delta is > >> extrapolated to cover the full time range as specified in the range vector > >> selector, so that it is possible to get a non-integer result even if the > >> sample values are all integers."* > >> > >> You haven't said what $__interval expands to in your query. It must be > >> at least 30 seconds, because otherwise you wouldn't have two values in your > >> range vector. > >> > >> So let's see what happens with 30 seconds. The window contains two > >> values: > >> > >> [...X........X...] > >> 7616 7618 > >> <--15s--> > >> > >> The difference between these is 2, and the time interval between them is > >> 15 seconds. However this increase is then extrapolated to cover the whole > >> window period of 30 seconds, so the value returned by delta() would be 4. > >> > >> What about if $__interval was 45 seconds? Then you'd have three values, > >> the difference between the first and last is 2, the time difference is 30 > >> seconds extrapolated to 45 seconds, so the result would be 2 x (45/30) = 3. > >> > >> If you want the actual difference between the metric now and the metric > >> some time ago, you can do : > >> > >> something - something offset 15s > >> > >> However, both that expression and delta() will give you nonsense values > >> if a counter resets, because it will jump back down towards zero and give > >> you a large negative value. > >> > >> Better: > >> > >> (something - something offset 15s) >= 0 > >> > >> but it won't handle counter resets as well as rate() or increase() can. > >> > >> -- > >> 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 on the web visit > >> https://groups.google.com/d/msgid/prometheus-users/f75b2007-96ed-4c66-b719-602934827cd3n%40googlegroups.com > >> <https://groups.google.com/d/msgid/prometheus-users/f75b2007-96ed-4c66-b719-602934827cd3n%40googlegroups.com?utm_medium=email&utm_source=footer> > >> . > >> > > > > > > -- > > Best Regards, > > > > Aliaksandr Valialkin, CTO VictoriaMetrics > > > > -- > > 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 on the web visit > > https://groups.google.com/d/msgid/prometheus-users/CAPbKnmAMMFA3gsTAbqVC5uz%3Dp-kymL3QT31vb9G3vOhemjWCfw%40mail.gmail.com > > <https://groups.google.com/d/msgid/prometheus-users/CAPbKnmAMMFA3gsTAbqVC5uz%3Dp-kymL3QT31vb9G3vOhemjWCfw%40mail.gmail.com?utm_medium=email&utm_source=footer> > > . > > > > -- > 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 on the web visit > https://groups.google.com/d/msgid/prometheus-users/CABbyFmprYUL4BbT2UA8O%2BE_tX9wnkd8goZ8UUKJxPASwwGnWig%40mail.gmail.com. -- Julien Pivotto @roidelapluie -- 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 on the web visit https://groups.google.com/d/msgid/prometheus-users/20201122140716.GA34130%40oxygen.

