2

我使用 Docker 镜像在我的 kubernetes 集群上部署了 Airflow 网络服务器、调度程序、worker 和 Flower。气流版本是 1.8.0。

现在我想将工作日志发送到 S3 和

  1. 从 Admin UI 创建 Airflow 的 S3 连接(只需设置S3_CONN为 conn id,s3作为类型。因为我的 kubernetes 集群在 AWS 上运行并且所有节点都有 S3 访问角色,应该足够了)
  2. 如下设置气流配置 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 中,本地日志优先于远程日志。如果无法找到或访问本地日志,则会显示远程日志。请注意,仅在任务完成(包括失败)后才会将日志发送到远程存储。换句话说,运行任务的远程日志不可用。

我没想到,但成功后,日志不会发送到远程存储吗?

4

1 回答 1

2

与气流一起安装的 boto 版本是 2.46.1,并且该版本不使用 iam 实例角色。

相反,您必须为在S3_CONN配置的额外字段中具有访问权限的 IAM 用户添加访问密钥和秘密

像这样: {"aws_access_key_id":"123456789","aws_secret_access_key":"secret12345"}

于 2017-05-24T05:55:55.537 回答