Skip to main content
Since 1.15.0 Calculate downtime from a heartbeat aggregate, taking the heartbeat aggregate from the preceding interval to interpolate values at the boundary. This checks when the last heartbeat in the predecessor was received and makes sure not to consider the heartbeat interval after that time as unhealthy, even if it extends into the current aggregate prior to the first heartbeat.
interpolated_downtime(
    agg HEARTBEATAGG,
    pred HEARTBEATAGG
) RETURNS INTERVAL

Arguments

NameTypeDefaultRequiredDescription
aggHeartbeatAgg-A heartbeat aggregate to get the liveness data from
predHeartbeatAgg-The heartbeat aggregate for the interval before the one being measured, if one exists

Returns

ColumnTypeDescription
interpolated_downtimeINTERVALThe sum of all the unhealthy ranges in the aggregate, excluding those covered by the last heartbeat of the previous interval

Samples

Given a table called liveness containing weekly heartbeat aggregates in column health with timestamp column date, use this command to get the total interpolated downtime of the system during the week of Jan 9, 2022.
SELECT interpolated_downtime(
  health,
  LAG(health) OVER (ORDER BY date)
)
FROM liveness
WHERE date = '01-9-2022 UTC'
Returns:
interpolated_downtime
---------------------
       00:03:55