Airflow1.10.3以上版本DAG执行过程Task失败集成钉钉机器人告警

前言

作者原贴
该大佬在19年将代码贡献,利用大佬的代码,简单做配置和写回调函数,即可使用。

注意要点

钉钉机器人需要创建一个3人以上的群才可以创建,且需要定义关键字,关键字只要包含与告警信息里即可。

配置airflow

进入webUI,点击admin中的connection
在这里插入图片描述然后配置dingding_default
在这里插入图片描述注意 host填写https://oapi.dingtalk.com,password填写access_token等号后面的内容,该信息由钉钉机器人提供,只需要复制即可。
在这里插入图片描述修改后点击save!

Dag Demo

from datetime import datetime, timedelta
import airflow
from airflow import DAG
from airflow.models import Variable
from airflow.operators.bash_operator import BashOperator
from airflow.contrib.operators.dingding_operator import DingdingOperator
import re
import pendulum
from airflow.operators.python_operator import PythonOperator
from airflow.utils.trigger_rule import TriggerRule

default_args = {
    'owner': 'Airflow',
    'depends_on_past': False,
    #'start_date': datetime(2021, 8, 24),
    'start_date': airflow.utils.dates.days_ago(2),
    'retries': 1,
    #'retry_delay': timedelta(minutes=1),
    'retry_delay': timedelta(seconds=2),
    }
def failure_callback(context):
        message = '告警 AIRFLOW TASK FAILURE TIPS:\n' \
                  'DAG:    {}\n' \
                  'TASKS:  {}\n' \
                  'Reason: {}\n' \
             .format(context['task_instance'].dag_id,
                     context['task_instance'].task_id,
                     context['exception'])
        return DingdingOperator(
           task_id='dingding_success_callback',
           dingding_conn_id='dingding_default',
           message_type='text',
           message=message,
           at_all=True,
        ).execute(context)
        
default_args['on_failure_callback'] = failure_callback

dag= DAG(
    'dingtest',
    default_args=default_args,
    concurrency=1,
    max_active_runs=1,
    catchup=False,
    description='DingdingTestAlert',
   #schedule_interval="30 9 * * *"
)
print_hello=BashOperator(
      task_id='print_hello',
      bash_command='echo "hello"',
      dag=dag,
        )

dd=DingdingOperator(
   task_id='dingding',
   dingding_conn_id='dingding_default',
   message_type='text',
   message='告警  DingTalk airflow dingding test by kevin',
   at_mobiles=['909090909'],
   dag=dag,
         )


move_file=BashOperator(
       task_id='mvhfdsfile',
       bash_command='hadoop fs -mv /user/hive/warehouse/test/ads/dws_map_pop_click /user',
       dag=dag,
            )
print_hello >> dd >> move_file

作用

failure_callback利用dag中注册回调,每次发现dag中的任一个task执行失败,则触发回调!

由于我的机器人配置关键字为告警,所以我在每个信息中添加该关键字。如果不添加则会抛出异常。
在这里插入图片描述好了测试一下。
在这里插入图片描述

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值