前言
作者原贴
该大佬在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执行失败,则触发回调!
由于我的机器人配置关键字为告警,所以我在每个信息中添加该关键字。如果不添加则会抛出异常。
好了测试一下。