Оповещение, если данные в определенных ярлыках отсутствуют в Prometheus - PullRequest
0 голосов
/ 21 февраля 2019

Я посылаю данные о двух дисках в Прометей.Я хочу предупредить, если метрики одного диска перестают отправлять метрики.Скажем, у меня есть diskA и diskB, и я собираю метрику disk_up.Теперь диск B не удалось.В Prometheus

disk_up{disk="diskA"} будет иметь данные, а disk_up{disk="diskB"} будет отсутствовать

absent(disk_up) будет 0, поскольку disk_up содержит данные диска A.absent(disk_up{disk="diskB"}) послужит цели.Но я не хочу жестко кодировать имена дисков.

Могу ли я узнать, какой способ лучше настроить оповещение для этого сценария?

1 Ответ

0 голосов
/ 21 февраля 2019

Вы можете использовать что-то вроде этого:

max_over_time(disk_up[1h])
  unless
disk_up

Т.е. метрика существовала в любое время в течение последнего 1 часа, но не существует сейчас.

Вы получите ложноположительный результатесли метрика disk_up всплывает для некоторого diskC, хотя.Или если метрика получает или теряет одну метку из-за экспортера или вашей конфигурации Prometheus.

Вы можете избежать первой, явно отфильтровывая диски / экземпляры / все, что вас интересует, но это поставит вас в тупикне жестко их кодировать.Хотя, вероятно, разумнее сделать:

max_over_time(disk_up{disk~="disk(A|B)"}[1h])
  unless
disk_up{disk~="disk(A|B)"}

Или, по крайней мере,

max_over_time(disk_up{job="my_disk_job"}[1h])
  unless
disk_up{job="my_disk_job"}
...