Выбор ответа Middle PromQL обновлено
Алерт на пропавший сервис
Вопрос
Алерт sum(rate(http_requests_total{job="api"}[5m])) == 0 не сработал, когда все поды сервиса удалили. Почему и как исправить?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Рядов нет, сравнивать не с чем; нужен absent(up{job="api"}). sum по пустому вектору возвращает пустой результат, а не 0, поэтому условие нечему выполнять. absent() возвращает 1, когда рядов нет.
Варианты ответа
- Алерт сработает через 15 дней, когда истечёт ретеншн старых рядов
- sum по пустому множеству даёт 0, значит сломан Alertmanager
- Нужно заменить
== 0на< 1, чтобы учесть дробные значения - Рядов нет, сравнивать не с чем; нужен
absent(up{job="api"})правильный ответ
Разбор
sum по пустому вектору возвращает пустой результат, а не 0, поэтому условие нечему выполнять. absent() возвращает 1, когда рядов нет. Хорошая практика: отдельный алерт на исчезновение цели или метрики для каждого критичного сервиса. Ретеншн и замена оператора проблему не решают.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.