Получение секунд, когда предупреждение находилось в состоянии - PullRequest
0 голосов
/ 02 октября 2019

С учетом запроса ALERTS, подобного приведенному ниже:

timestamp(ALERTS{alertstate="firing"})

Как вы можете определить, сколько секунд он стрелял?

1 Ответ

2 голосов
/ 02 октября 2019

Вычислить количество секунд (или, что эквивалентно, процент времени) за прошедший час / день / независимо от того, что сработало оповещение, довольно просто:

sum_over_time(ALERTS[1h:1s])

Или с меньшим разрешениемпо соображениям эффективности:

sum_over_time(ALERTS[1h:10s]) * 10

Определение того, когда срабатывает оповещение (или, эквивалентно, сколько времени оно срабатывает с момента последнего срабатывания), несколько сложнее:

ALERTS{alertstate="firing"}
  * ignoring(alertstate)
(
  time() - max_over_time(timestamp(ALERTS{alertstate="pending"})[1h:10s])
    or ignoring(alertstate)
  ALERTS{alertstate="firing"} * 3600
)

Т.е. время, прошедшее с тех пор, как оно в последний раз находилось в состоянии "pending", если оно в данный момент стреляет. Обратите внимание, что есть диапазон 1h и значение по умолчанию 3600, что означает, что он достигает максимума в 3600 секунд.

...