Я пытаюсь написать общее правило для оповещения о стрельбе, когда обнаруженная цель пропадает. В частности, модули kubernetes аннотированы для очистки и автоматически обнаруживаются с помощью kubernetes_sd_configs.
Выражения формы: absent(up{job="kubernetes-pods"}==1)
не возвращать никаких дополнительных меток, которые были доступны как часть временного ряда вверх. Если капсула удалена (скажем, по ошибке), она исчезает как цель из Прометея. Выдается предупреждение на основе absent (), но у меня нет информации о пропавшем модуле.
Я думаю, что то же самое происходит с автоматически обнаруживаемыми сервисами Kubernetes. Если он удален по ошибке, он просто исчезает как контролируемая цель. Я не уверен, что поведение target_groups (https://prometheus.io/blog/2015/06/01/advanced-service-discovery/) с диапазоном ip - то есть, если физический узел выключен, метрики просто останавливаются и up == 0 недоступен.
Как правильно определить, когда автоматически обнаруженная цель исчезла? Или мне нужно явно указать правила для каждой службы / узла / модуля, даже если они были обнаружены автоматически?
Или мне нужно жестко закодировать правила для каждой службы / узла / модуля, даже если он был обнаружен автоматически?
Да, вам нужно правило для каждой отдельной вещи, чтобы предупреждать об отсутствии, поскольку Prometheus не знает об их ярлыках из любого места - обнаружение служб не возвращает их.
Обычное предупреждение absent(up{job="kubernetes-pods"})
Мы решаем нечто подобное. Наша установка: когда где-то запускается какой-то сервис, некоторые метрики появляются с ненулевым значением. Затем, если какой-либо из этих показателей пропадает, нам нужно оповещение.
В нашем случае правильным выражением для этого является
count (our_metric offset 1h > 0) by (some_name) unless count(our_metric) by (some_name)
Это возвращает вектор, который содержит показатели, которые присутствовали час назад, но отсутствуют сейчас. Значения показателей - это count(...)
из LHS (что может даже пригодиться).
Вы можете использовать любые LHS / RHS. Подробнее об операторе if.