Apache Airflow SLA Miss-不发送电子邮件

时间:2018-08-20 07:48:48

标签: apache airflow

我使用Apache Airflow,并且希望它在出现sla miss时向我发送电子邮件。这是我的配置Configuration

我创建了肯定不会出现sla的dag奔跑。

from airflow import DAG
from datetime import datetime, timedelta
from airflow.operators.bash_operator import BashOperator

args = {
    'owner': 'airflow'
    , 'depends_on_past': False
    , 'start_date': datetime(2018, 8, 17, 0, 0)
    , 'retries': 0
    , 'sla': timedelta(seconds=15)
    , 'email': ['myemail@myemail.com']
    , 'email_on_failure': True
    , 'email_on_retry': True
}

dag = DAG('sla-email-test'
          , default_args=args
          , max_active_runs=1
          , schedule_interval="@daily")

t1 = BashOperator(
    task_id='timeout',
    bash_command='sleep 60',
    retries=0,
    dag=dag,
)

很遗憾,它没有发送任何电子邮件 Output

是什么原因,我可以使用gui查看有关它的日志吗?

1 个答案:

答案 0 :(得分:1)

如果您使用本地sendmail,请更改您的气流配置,使其与以下配置匹配。您不需要smtp_user或smtp_password。

[email]
email_backend = airflow.utils.email.send_email_smtp


[smtp]
# If you want airflow to send emails on retries, failure, and you want to use
# the airflow.utils.email.send_email_smtp function, you have to configure an
# smtp server here
smtp_host = localhost
smtp_starttls = False
smtp_ssl = False
# Uncomment and set the user/pass settings if you want to use SMTP AUTH
#smtp_user = not used
#smtp_password = not used
smtp_port = 25
smtp_mail_from =  SendingAlias@Company.com

您可以使用以下命令跟踪气流工作人员,以查看其是否尝试发送电子邮件:journalctl -u airflow-worker -f

您还可以使用cat /var/log/maillog查看您的sendmail日志。

这应该可以解决您的问题/为您提供足够的信息进行调试。

这是我写的关于遇到该问题时如何处理的文章:airflow email on failure.