气流调度程序意外关闭
Airflow scheduler unexpectedly shuts down
我在 Ubuntu 的 EC2 实例上 运行 airflow v1.8.0
。我拥有的各种 DAG 运行 与几个不同的 SQL 表相连。我遇到了一个反复出现的问题,即 airflow scheduler -D
引发的调度程序对我关闭了。当我检查 airflow-scheduler.err
时没有错误。为了进行调试,我进入 /airflow
目录并使用 rm airflow-scheduler*
清除所有与调度程序相关的文件并重新启动守护程序。我正在使用 LocalExecutor
。
两个问题:(1) 这是怎么回事,我该如何解决? (2) 如果没有快速修复,是否至少有一种方法可以让气流在调度程序失败时向我发送电子邮件?
在您的 airflow.cfg
中有一个调度程序部分。
在那个部分有一个子进程日志的路径:
[scheduler]
...
child_process_log_directory = /tmp/airflow/scheduler/logs
相关错误信息可能在该目录的日志中。
关于你的第二个问题,我认为 Airflow 中不存在。我认为无论如何都应该对其进行外部监控,因为如果 Airflow 出现问题,它可能无法向您发送电子邮件。
相反,您可以查看 SchedulerJob 生成的心跳。我对此查询进行了一些监控:
SELECT MAX(latest_heartbeat) FROM job WHERE job_type = 'SchedulerJob';
您可以使用它来确保最近触发了一个调度周期。
我对工作类型 LocalTaskJob 和 GROUP BY hostname
做同样的事情,以确保每个工人都在接工作。
我在 Ubuntu 的 EC2 实例上 运行 airflow v1.8.0
。我拥有的各种 DAG 运行 与几个不同的 SQL 表相连。我遇到了一个反复出现的问题,即 airflow scheduler -D
引发的调度程序对我关闭了。当我检查 airflow-scheduler.err
时没有错误。为了进行调试,我进入 /airflow
目录并使用 rm airflow-scheduler*
清除所有与调度程序相关的文件并重新启动守护程序。我正在使用 LocalExecutor
。
两个问题:(1) 这是怎么回事,我该如何解决? (2) 如果没有快速修复,是否至少有一种方法可以让气流在调度程序失败时向我发送电子邮件?
在您的 airflow.cfg
中有一个调度程序部分。
在那个部分有一个子进程日志的路径:
[scheduler]
...
child_process_log_directory = /tmp/airflow/scheduler/logs
相关错误信息可能在该目录的日志中。
关于你的第二个问题,我认为 Airflow 中不存在。我认为无论如何都应该对其进行外部监控,因为如果 Airflow 出现问题,它可能无法向您发送电子邮件。
相反,您可以查看 SchedulerJob 生成的心跳。我对此查询进行了一些监控:
SELECT MAX(latest_heartbeat) FROM job WHERE job_type = 'SchedulerJob';
您可以使用它来确保最近触发了一个调度周期。
我对工作类型 LocalTaskJob 和 GROUP BY hostname
做同样的事情,以确保每个工人都在接工作。