On Sat, Nov 21, 2020 at 4:34 PM Ben Kochie <[email protected]> wrote:

> While that sounds like a good idea, it's going to produce less accurate
> results for most use cases.
>

Could you provide practical examples?


>
> 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>
>> .
>>
>

-- 
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/CAPbKnmDqcpKzJJy53b7aifPAARHtWDJ5n_i-7_J3%2BTnNvybppw%40mail.gmail.com.

Reply via email to