Прометей: Считайте метри c значение за период времени - PullRequest
1 голос
/ 06 мая 2020

Я не говорю по-английски sh очень хорошо, но мне нужен совет. У меня есть Прометей. Как я могу рассчитать количество простоев услуги за определенный период времени? Это моя функция

 irate(ALERTS{job="blackbox", alertstate="firing"}[2h])

enter image description here

1 Ответ

0 голосов
/ 06 мая 2020

Из предоставленного вами изображения кажется, что значение 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)
...