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.

