Correction, what I meant to write was validator_statuses[1d] == 2 # NOT IMPLEMENTED
But the subquery was correct (I think!) There is a similar thread about counting how many times up==1 in a range: https://groups.google.com/g/prometheus-users/c/QsY_OkdH_gU On Friday, 19 May 2023 at 12:11:54 UTC+1 Brian Candler wrote: > Unfortunately, you can't apply value filters to range vectors > > validator_statuses[1d] # this is OK > validator_statuses{foo="bar"}[1d] # this is OK > (validator_statuses == 2)[1d] # NOT IMPLEMENTED > > (there are several scenarios in which I'd find this useful). The best you > can do is a subquery: > > (validator_statuses == 2)[1d:1m] > > This evaluates the inner expression repeatedly at different times 1m > apart. That will *approximate* what you want if the scraping interval for > that metric is also 1m; however each evaluation will look back up to 5 > minutes to find a value, so missing scrapes will be seen as the value of > the previous scrape. > > On Friday, 19 May 2023 at 11:10:14 UTC+1 Stefano Mantini wrote: > >> I’m looking at an efficient way of returning the MAX of each day’s >> metrics in a given time period >> >> The metric is a Gauge Vector that identifies each Validator by public >> key, and the value represents an ENUM value. >> >> Example >> validator_statuses{pubkey="pk0"} 0 // UNKNOWN >> validator_statuses{pubkey="pk1"} 1 // DEPOSITED >> validator_statuses{pubkey="pk2"} 2 // PENDING >> validator_statuses{pubkey="pk3"} 3 // ACTIVE >> validator_statuses{pubkey="pk4"} 4 //EXITING >> validator_statuses{pubkey="pk5"} 5 // SLASHING >> validator_statuses{pubkey="pk6"} 6 //EXITED >> >> I am retrieving the MAX by Day using this query: >> max_over_time( validator_statuses{} [1d]) >> >> Which returns the timestamp of the day, the pubkey and the MAX status for >> that timestamp day >> +---------------------+--------+--------+ >> | Time | Pubkey | Status | >> +---------------------+--------+--------+ >> | 2023-05-01 00:00:00 | 0x0 | 1 | >> | 2023-05-02 00:00:00 | 0x0 | 2 | >> | 2023-05-03 00:00:00 | 0x0 | 2 | >> | 2023-05-04 00:00:00 | 0x0 | 3 | >> | 2023-05-05 00:00:00 | 0x0 | 3 | >> | 2023-05-06 00:00:00 | 0x0 | 3 | >> | 2023-05-07 00:00:00 | 0x0 | 3 | >> | 2023-05-08 00:00:00 | 0x0 | 3 | >> | 2023-05-09 00:00:00 | 0x0 | 3 | >> | 2023-05-010 00:00:00| 0x0 | 3 | >> +---------------------+--------+--------+ >> >> However, i'm having trouble when trying to count by and aggregate those >> statuses >> My intention is to count the number of days a validator is in each status >> per $__range, the above data would return this kind of tablular data >> >> >> +--------+-----------+------------------+------------------+------------------+ >> | Pubkey | StatusNow | Days In Status 1 | Days In Status 2 | Days In >> Status 3 | >> >> +--------+-----------+------------------+------------------+------------------+ >> | 0x0 | 3 | 1 | 2 | >> 7 | >> >> +--------+-----------+------------------+------------------+------------------+ >> >> Can this be done entirely in PromQL? Or will i have to leverage multiple >> queries and aggregate in Grafana? >> >> *All information and attachments included in this email are confidential >> and intended for the original recipient only. You must not share any part >> of this message with any third party. If you have received this message by >> mistake, please let us know** immediately, so that we can make sure such >> a mistake does not happen again and delete this message from your system.* >> > -- 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/d74faf5f-4922-46c6-b307-ad9f5007fac5n%40googlegroups.com.

