It's not easy to do exactly.

To get a rough answer, you can do a subquery 
<https://prometheus.io/docs/prometheus/latest/querying/basics/#subquery>:  
(foo == 1)[24h:1m] will resample the timeseries at 1 minute intervals, then 
you can wrap that with count_over_time, giving:
    count_over_time((foo == 1)[24h:1m])

But if you weren't scraping at exactly 1 minute intervals, the count may 
not be accurate. Also if there are missed samples, the value of foo at time 
T will look back for the previous value (up to 5 minutes by default), which 
means in that situation some samples may be double-counted (in effect, 
assuming the metric value remained constant over that time, when you don't 
actually know what value it had).

The only way I know to get an exact answer is to send the range vector 
query "foo[24h]" to the *instant* query endpoint 
<https://prometheus.io/docs/prometheus/latest/querying/api/#instant-queries>, 
then filter and count the samples client-side.  A range vector like that 
gives the raw values with their raw timestamps as stored in the TSDB.

For this use case it would be nice if Prometheus were to allow certain 
operators to work directly on range vectors, so you could write
    foo[24h] == 1
But that would add quite a lot of complexity into the semantics of the 
query language, which already has to consider argument combinations for 
(scalar, scalar), (scalar, instant vector) and (instant vector, instant 
vector).

On Wednesday, 22 March 2023 at 05:19:01 UTC BHARATH KUMAR wrote:

> Hello All,
>
> I have a Prometheus metric that will give output as 0 or 1 or 2. It can be 
> anything(0 or 1 or 2). Could you tell me the number of 1's that occurred in 
> the last 24 hours?
>
> I tried with count_over_time. but I am getting errors. I tried 
> sum_over_time, but it is not working for a few test cases.
>
> Any lead?
>
> I really appreciate any help you can provide.
>
> Thanks & regards,
> Bharath Kumar
>

-- 
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/843edf07-a453-4731-a068-de9b691789ean%40googlegroups.com.

Reply via email to