我使用Docker镜像在我的kubernetes集群上部署了Airflow网络服务器,调度程序,工作人员和花 . 气流版本为1.8.0 .
现在我想将工作日志发送到S3和
-
从Admin UI创建Airflow的S3连接(只需将
S3_CONN
设置为conn id,s3
作为类型 . 因为我的kubernetes集群在AWS上运行且所有节点都具有S3访问角色,所以应该足够了) -
设置Airflow配置如下
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标记为成功 . But I could see no logs on S3.
工作人员和Web服务器上没有相关的错误日志,所以我甚至看不出可能导致此问题的原因 . 日志没有发送 .
有谁知道Airflow的远程记录是否有一些限制,除了官方文档中的这种描述? https://airflow.incubator.apache.org/configuration.html#logs
在Airflow Web UI中,本地日志优先于远程日志 . 如果找不到或访问本地日志,将显示远程日志 . 请注意,只有在任务完成(包括失败)后才会将日志发送到远程存储 . 换句话说,运行任务的远程日志不可用 .
我没想到,但是在成功的情况下,日志是否会被发送到远程存储?
1 回答
随气流一起安装的boto版本是2.46.1,该版本不使用iam实例角色 .
相反,您必须为在
S3_CONN
配置的额外字段中具有访问权限的IAM用户添加访问密钥和密码像这样:
{"aws_access_key_id":"123456789","aws_secret_access_key":"secret12345"}