Airflow 2.7.3 WebUI无法读取日志报503错误排查求助
针对你遇到的WebUI无法查看任务日志(worker本地日志正常)、返回503的问题,按以下步骤排查:
检查worker容器内日志服务状态
进入worker容器,执行ps aux | grep airflow,确认airflow worker进程是否带有--worker-log-server-port 8793参数(默认启动时会加载该配置)。接着在容器内执行curl http://localhost:8793/log/dag_id=run_one_model_DAG/run_id=manual__2024-05-15T17:18:04.870528+00:00/task_id=one_model.model1_run/attempt=1.log,如果本地都无法访问,说明worker的日志服务没启动或端口未监听,需要检查worker启动命令或配置。验证容器间网络连通性
从webserver容器执行ping f2ad1c31c101,确认能ping通worker容器ID(Docker默认同网络内容器可通过ID通信)。再尝试curl http://f2ad1c31c101:8793,如果返回503,说明worker侧日志服务未正常提供服务;如果连不上,检查webserver和worker是否在同一个Docker网络中(Portainer栈配置里的network字段是否一致)。核对Airflow核心配置
检查worker节点的airflow.cfg:- 确认
worker_log_server_port = 8793,enable_worker_log_server = True(默认开启,若被修改会导致日志服务不启动) - 确认
remote_logging = False(如果启用远程日志,WebUI会优先拉取远程日志,但你本地worker有日志,所以该配置需保持关闭)
- 确认
排查代理配置干扰
因为环境带有代理,检查webserver容器的NO_PROXY环境变量,必须包含worker的容器ID(f2ad1c31c101)或Docker内部网络的域名后缀(比如自定义网络为airflow-net,则添加.airflow-net)。若未添加,webserver会通过代理访问worker端口,导致无法连接返回503。查看worker日志服务启动日志
执行docker logs <worker-container-name-or-id> | grep log_server,搜索日志服务启动相关的报错信息,比如端口被占用、权限不足等,这些都会导致日志服务无法正常对外提供服务。
内容的提问来源于stack exchange,提问作者Aleksey S.

