Отслеживайте статус пакетных заданий с помощью метрик в Prometheus - PullRequest
1 голос
/ 13 июля 2020

Некоторые из наших приложений имеют пакетные задания, которые собирают данные каждую ночь. Эти пакетные задания, которые являются сценариями Python, используют Prometheus Pushgateway для получения значений sh metri c для Prometheus, и у нас есть правила, которые запускают предупреждения (в Alertmanager), когда эти показатели становятся недействительными (например, превышают определенный порог) .

Теперь мы также хотели бы использовать метрики Prometheus, чтобы дважды проверить правильность выполнения самих пакетных заданий: например, было ли задание начато вовремя? Были ли ошибки? Работа выполнена до конца? С этой целью мы хотели бы изменить наши сценарии Python на pu sh a metri c при запуске и завершении сценария, а также при возникновении любых ошибок. Однако это вызывает некоторые проблемы: у нас довольно много пакетных заданий, и 3 метрики на пакетное задание создают много ручной настройки правил / предупреждений; мы также хотели бы отображать статус графически в Grafana и не совсем уверены, как будет выглядеть правильный визуальный элемент для этого.

Кто-нибудь еще пытался решить аналогичную проблему, используя метрики Prometheus для отслеживания статуса нескольких пакетных заданий? Какие показатели вы записывали и как выглядели ваши предупреждения / правила? Вы нашли интуитивно понятный способ графического отображения статуса каждого пакетного задания?

1 Ответ

0 голосов
/ 18 июля 2020

Вы можете выставить метрику c на пакетное задание с именем last_run_at. И тогда у вас могут быть предупреждения, основанные на том, что задание выполнялось более 24 часов go (или независимо от вашего порога).

Простое предупреждение будет: last_run_at{env="prod"} < scalar(time()) - 60 * 60 * 24

Для этого пригодится функция time () в Prometheus. Документы: https://prometheus.io/docs/prometheus/latest/querying/functions/#time

Вам не нужно создавать оповещения для каждого задания. Вы можете сделать оповещение о любом задании, которое не выполнялось в течение последних 24 часов. Или вы можете фильтровать по среде или любым другим меткам.

Дело в том, что для оповещения не обязательно должно быть задание 1: 1. И вы также сможете довольно легко построить график в Grafana.

...