Из предоставленного вами изображения кажется, что значение metri c (скажем, metric_x
) равно 1, когда сервер не работает, иначе 0.
Вы можете использовать запрос sum_over_time(range-vector)
функция для вычисления, сколько раз значение было равно 1 в заданном интервале.
Следующий запрос вычисляет сумму metric_x
(ie. сколько раз mertic_x
было равно 1 ) за последние 5 минут.
sum_over_time(metric_x{job="xxx"}[5m])
Точно так же следующий запрос вычисляет сумму metric_x
дня, в течение которого неделя была go. Это похоже на диапазон, время от начала до времени окончания.
sum_over_time(metric_x{job="xxx"}[1d] offset 1w)
Ссылки:
Обновление:
Хорошо, если бы я был на вашем месте , Я бы создал правило записи для запроса и выполнил бы sum_over_time()
на новом метри c, созданном правилом.
groups:
- name: rules
rules:
- record: blakbox:ALERTS:irate
expr: irate(ALERTS{job="blackbox", alertstate="firing"}[2h])
sum_over_time(blakbox:ALERTS:irate{job="blackbox", alertstate="firing"}[1d] offset 1w)