petrbel
petrbel

Reputation: 2538

PromQL: time from last value of a series

I have multiple server instances that are exporting various metrics. Frequently, some instances are offline, therefore, they don't export anything.

I would like to create a panel that would simply display a table in which each server instance is represented by a row and states how long (hh:mm) the server has been offline (i.e. a duration between last exported datapoint in a series and now).

Example output:

instance  | offline_duration
----------------------------
instance1 | 00:00
instance2 | 01:12
instance3 | 25:10

I have multiple other use-cases in which I would appreciate both the ability of selecting the last value (of all times) and measuring time duration from now to the series data point.

Semantically, I was hoping for something like now() - timestamp(last_over_time(my_metric)) but this has a lot of obvious problems such as last_over_time requires a range-vector.

Is this even possible? Thank you for your help!

Upvotes: 1

Views: 749

Answers (1)

bjakubski
bjakubski

Reputation: 1757

This seems to be possible with subquery:

time() - (
  max_over_time(
     ( timestamp(your_metric) )[2h:1m]
  )
)

2h here is the time window - how far into the past query should look for last data point

Upvotes: 1

Related Questions