Система уведомления о задержке в воздушном потоке

Я пытаюсь внедрить систему предупреждений / уведомлений Airflow, когда DAG или задача не работают, успешно или задерживаются. Мне удалось реализовать уведомления FAILURE и SUCCESS, а также удалось частично реализовать систему уведомления о задержках с использованием SLA, но SLA имеет ограничение, заключающееся в том, что оно работает только с запланированными DAG, многие из DAG в нашей системе основаны на триггерах. Есть ли способ реализовать систему уведомления о задержках без SLA в Airflow? Заранее спасибо !




Ответы (1)


Соглашение об уровне обслуживания (SLA) обеспечивает возможность отправки электронных писем в случае, если задача превышает ожидаемые временные рамки с начала выполнения DAG и в соответствии с официальная документация и это средняя статья, Airflow в настоящее время не поддерживает эту функцию в запущенных DAG; в этом случае я рекомендую вам открыть проблему улучшения в Airflow Issue Tracker, чтобы запросить поддержку этой функции.

С другой стороны, вы можете использовать следующий подход для проверки SLA после завершения работы DAG через on_success_callback:

def success_function (context):
   s_date = context.get('task_instance').start_date.replace(tzinfo = None)
   e_date = datetime.now().replace(tzinfo = None)
  
   execution_time = e_date - s_date
   sla = timedelta (seconds = 30)
 
   if execution_time> sla:
       print('send_email')
   else:
       print('no send email')

t1 = BashOperator (
   task_id = 'print_date',
   bash_command = 'date',
   dag = dag,
   on_success_callback = success_function
)

Помните о следующих соображениях, если вы реализуете этот обходной путь:

  • Контекст не содержит информацию об SLA, настроенном в задаче; поэтому необходимо указать его в функции для каждой задачи, в которой вы хотите проверить SLA.
  • Пропущенные SLA не будут отображаться в пользовательском интерфейсе Airflow.
  • Необходимо создать логику для отправки писем
person Orlandog    schedule 30.10.2020
comment
Привет, Орландог, это потрясающе сработало отлично. Пожалуйста, примите мой вопрос, если он полезен. Большое спасибо - person sethu; 06.01.2021