我使用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查看有关它的日志吗?
答案 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.