我使用 Docker 镜像在我的 kubernetes 集群上部署了 Airflow 网络服务器、调度程序、worker 和 Flower。气流版本是 1.8.0。
现在我想将工作日志发送到 S3 和
- 从 Admin UI 创建 Airflow 的 S3 连接(只需设置
S3_CONN
为 conn id,s3
作为类型。因为我的 kubernetes 集群在 AWS 上运行并且所有节点都有 S3 访问角色,应该足够了) - 如下设置气流配置
remote_base_log_folder = s3://aws-logs-xxxxxxxx-us-east-1/k8s-airflow
remote_log_conn_id = S3_CONN
encrypt_s3_logs = False
首先我尝试创建一个 DAG,以便它在运行后立即引发异常。这行得通,可以在 S3 上看到日志。
所以我进行了修改,以便 DAG 现在创建一个 EMR 集群并等待它准备好(等待状态)。为此,我重新启动了所有 4 个 docker 容器的气流。
现在 DAG 看起来正在运行,集群已启动,一旦准备就绪,DAG 将标记为成功。但我在 S3 上看不到任何日志。
工作人员和 Web 服务器上没有相关的错误日志,所以我什至看不到可能导致此问题的原因。只是没有发送日志。
除了官方文档中的描述外,有谁知道 Airflow 的远程记录是否有一些限制? https://airflow.incubator.apache.org/configuration.html#logs
在 Airflow Web UI 中,本地日志优先于远程日志。如果无法找到或访问本地日志,则会显示远程日志。请注意,仅在任务完成(包括失败)后才会将日志发送到远程存储。换句话说,运行任务的远程日志不可用。
我没想到,但成功后,日志不会发送到远程存储吗?