本地Ubuntu环境运行Airflow DAG时日志文件不存在问题求助
本地Airflow运行DAG时日志获取失败问题解决
环境与DAG代码
Ubuntu本地部署Airflow,配置文件路径为/home/airflow/airflow/airflow.cfg,已创建DAG目录/home/airflow/airflow/dags/,示例DAG代码如下:
from datetime import datetime, timedelta from airflow import DAG from airflow.operators.bash import BashOperator default_args = { 'owner': 'airflow', 'retries': 5, 'retry_delay': timedelta(minutes=2) } with DAG( dag_id='our_first_dag', default_args=default_args, description='This is our first dag that we write', start_date=datetime(2022, 7, 29, 2), schedule_interval='@daily' ) as dag: task1 = BashOperator( task_id='first_task', bash_command="echo hello world, this is the first task!" ) task1
DAG识别状态
执行airflow dags list确认DAG已被识别:
$ airflow dags list dag_id | filepath | owner | paused =================+==================+=========+======= our_first_dag | our_first_dag.py | airflow | False
运行错误信息
重启调度器与Webserver后运行DAG,出现如下错误:
*** Log file does not exist: /home/airflow/airflow/logs/dag_id=our_first_dag_v5/run_id=manual__2022-11-13T01:35:03.807018+00:00/task_id=first_task/attempt=4.log *** Fetching from: http://:8793/log/dag_id=our_first_dag_v5/run_id=manual__2022-11-13T01:35:03.807018+00:00/task_id=first_task/attempt=4.log *** Failed to fetch log file from worker. Request URL is missing an 'http://' or 'https://' protocol.
Airflow目录结构
Airflow根目录内容:
-rw-rw-r-- 1 airflow airflow 50564 Nov 12 12:56 airflow.cfg -rw-r--r-- 1 airflow airflow 454656 Nov 11 13:07 airflow.db -rw-r--r-- 1 airflow airflow 7 Nov 12 18:12 airflow-webserver.pid drwxrwxr-x 3 airflow airflow 4096 Nov 12 18:08 dags drwxrwxr-x 4 airflow airflow 4096 Nov 12 17:56 logs -rw-rw-r-- 1 airflow airflow 4743 Nov 11 12:57 webserver_config.py
问题原因与解决方法
原因
错误中日志请求URL缺少Worker主机地址,说明Airflow配置中Worker的主机标识参数未正确设置,导致Webserver无法定位Worker获取日志;同时本地日志文件不存在,可能是Worker执行任务时日志写入失败或任务未实际执行。
解决步骤
修改Airflow配置
打开/home/airflow/airflow/airflow.cfg,找到并调整以下参数:- 设置
worker_hostname_callable = airflow.utils.net.get_hostname:让Worker自动获取正确的主机名 - 设置
worker_listen_address = 127.0.0.1(或你的机器内网IP):指定Worker监听地址 - 确认
worker_webserver_port = 8793:与错误日志中的端口保持一致 - 若使用LocalExecutor,确保
executor = LocalExecutor(默认SequentialExecutor无需单独启动Worker)
- 设置
检查日志目录权限
确认logs目录权限正确,当前目录权限drwxrwxr-x已满足Airflow用户读写需求,若日志子目录权限异常,可执行:sudo chown -R airflow:airflow /home/airflow/airflow/logs sudo chmod -R 775 /home/airflow/airflow/logs重启Airflow服务
重启调度器、Webserver(若使用CeleryExecutor需同时重启Worker):airflow scheduler restart airflow webserver restart # 若使用CeleryWorker airflow celery worker restart重新触发DAG
在Web UI或通过命令行重新触发DAG执行,检查日志是否正常生成与访问。
内容的提问来源于stack exchange,提问作者fsaa
相关产品推荐
相关产品推荐

