#airflow #prometheus #prometheus-node-exporter
#поток воздуха #prometheus #prometheus-узел-экспортер
Вопрос:
Я установил airflow [statsd] с помощью «pip install ‘apache-airflow [statsd]» и установил statsd_exporter. Теперь я вижу показатели расхода воздуха из Prometheus. но все метрики, связанные с airflow, имеют dag_id и task_id как часть имен метрик.
Например, для идентификатора базы данных «dag1» с идентификатором задачи «task1» метриками для времени, затраченного на выполнение задачи, являются: airflow_dag_dag1_task1_duration. Для идентификатора базы данных «dag2» с идентификатором задачи «task2» метрикой является: airflow_dag_dag2_task2_duration.
что меня интересует, так это что-то вроде: вызвать оповещение, если какой-либо dag завершается неудачно, или вызвать оповещение, если для завершения dag требуется более XXX секунд. другими словами, я не хочу создавать правило и оповещение для каждой отдельной базы данных или задачи. Я хочу предупредить общую ситуацию.
Как я могу создать правило / предупреждение в Prometheus для общего случая?
Ответ №1:
Вы должны иметь возможность использовать что-то вроде приведенного ниже и основывать свое оповещение на этом:
{__name__=~"airflow_dag. _duration"}
Однако имейте в виду, что если вы используете just {__name__=~". "}
, это дорогостоящий запрос, который потенциально может привести к поломке экземпляра, требующего перезапуска службы Prometheus.
Обновлено, чтобы включить пример оповещения:
- alert: Saf_Test
expr: ({__name__=~"windows_cpu. _total"} > 5.8281319e 07)
for: 5m
labels:
severity: warning
annotations:
description: 'Alert text here'
summary: 'Summary here'
Комментарии:
1. Спасибо Saf. вы имеете в виду, что я могу записать это в файл rules yaml на сервере prometheus, как здесь? prometheus.io/docs/prometheus/latest/configuration / . … ваш код выглядит как python code not rules, поэтому я не уверен, понимаю ли я, что вы имеете в виду. можете ли вы привести мне пример, как реализовать правило оповещения, используя ваше решение?
2. Конечно, я добавил пример оповещения, которое я тестировал на своем экземпляре. Надеюсь, это даст вам что-то, что вы можете изменить для своих нужд.
3. Спасибо, Saf. это для меня в новинку. Я проверю и дам вам знать.
4. Привет, Saf. и вы сказали, что это съест процессор сервера prometheus? Я думаю, что prometheus понятия не имеет, а просто слепо анализирует необработанное слово, которое может быть причиной. но я чувствую, что мой вариант использования очень распространен. Есть ли решение для эффективного выполнения запросов prometheus? метрики airflow, которые я получаю, созданы не мной, поэтому у меня нет возможности переместить dag / task из имени метрики в метку.
5. Я имел в виду больше, если вы просто делаете
{__name__=~". "}
— потому что это будет список всего, пока вы устанавливаете регулярное выражение для ограничения вашего поиска, у вас все должно быть хорошо