【问题标题】:Errno 13 Permission denied when Airflow tries to write to logs当 Airflow 尝试写入日志时 Errno 13 权限被拒绝
【发布时间】:2019-12-19 15:43:25
【问题描述】:

我们在使用 Airflow 时遇到权限错误,收到以下错误:

PermissionError: [Errno 13] Permission denied: '/usr/local/airflow/logs/scheduler/2019-12-18/../../../../home

我们已经尝试在容器内的 /usr/local/airflow/logs/schedule 目录上使用 chmod 777 -R ,但这似乎没有成功。

我们的 entrypoint.sh 脚本中有这个片段:

export AIRFLOW__CORE__BASE_LOGS_FOLDER="/usr/local/airflow/logs

还有其他人遇到过这个气流日志权限问题吗?似乎在网上找不到太多关于这个的东西。

【问题讨论】:

    标签: logging permissions airflow airflow-scheduler


    【解决方案1】:

    绑定挂载的文件夹权限也可能导致此错误。

    例如:

    docker-compose.yml(伪代码)

       service_name:
         ...
         volumes:
          - /home/user/airflow_logs:/opt/airflow/logs
    

    授予本地文件夹权限,以便气流容器可以写入日志,根据需要创建目录等,

     sudo chmod u=rwx,g=rwx,o=rwx /home/user/airflow_logs
    

    【讨论】:

    • 我遇到了同样的问题,我已经用以下命令解决了它: sudo chmod -R 777 /home/user/airflow_logs 另外,重要的是要提到这可以应用于任何文件夹试图从容器中导出。
    【解决方案2】:

    仅适用于有相同问题的任何人...

    令人惊讶的是,我不得不看一下Airflow documentation...并据此:

    Linux 上,容器中挂载的卷使用原生 Linux 文件系统用户/组权限,因此您必须确保容器和主机具有匹配的文件权限。

    mkdir ./dags ./logs ./plugins
    echo -e "AIRFLOW_UID=$(id -u)\nAIRFLOW_GID=0" > .env
    

    一旦您获得了匹配的文件权限:

    docker-compose up airflow-init
    
    docker-compose up
    

    【讨论】:

    • 谢谢你这对我有用。如果不设置 AIFLOW_UID,所有文件都将创建为 root 用户,这会导致权限问题。
    【解决方案3】:

    我在使用 Apache Airflow 1.10.7 时也遇到了同样的问题。

    Traceback (most recent call last):
      File "/usr/lib/python3.7/multiprocessing/process.py", line 297, in _bootstrap
        self.run()
      File "/usr/lib/python3.7/multiprocessing/process.py", line 99, in run
        self._target(*self._args, **self._kwargs)
      File "/home/radifar/.virtualenvs/airflow/lib/python3.7/site-packages/airflow/jobs/scheduler_job.py", line 135, in _run_file_processor
        set_context(log, file_path)
      File "/home/radifar/.virtualenvs/airflow/lib/python3.7/site-packages/airflow/utils/log/logging_mixin.py", line 198, in set_context
        handler.set_context(value)
      File "/home/radifar/.virtualenvs/airflow/lib/python3.7/site-packages/airflow/utils/log/file_processor_handler.py", line 65, in set_context
        local_loc = self._init_file(filename)
      File "/home/radifar/.virtualenvs/airflow/lib/python3.7/site-packages/airflow/utils/log/file_processor_handler.py", line 148, in _init_file
        os.makedirs(directory)
      File "/home/radifar/.virtualenvs/airflow/lib/python3.7/os.py", line 211, in makedirs
        makedirs(head, exist_ok=exist_ok)
      File "/home/radifar/.virtualenvs/airflow/lib/python3.7/os.py", line 211, in makedirs
        makedirs(head, exist_ok=exist_ok)
      File "/home/radifar/.virtualenvs/airflow/lib/python3.7/os.py", line 211, in makedirs
        makedirs(head, exist_ok=exist_ok)
      [Previous line repeated 5 more times]
      File "/home/radifar/.virtualenvs/airflow/lib/python3.7/os.py", line 221, in makedirs
        mkdir(name, mode)
    PermissionError: [Errno 13] Permission denied: '/media/radifar/radifar-dsl/Workflow/Airflow/airflow-home/logs/scheduler/2020-01-04/../../../../../../../home'
    

    检查 file_processor_handler.py 的工作原理后,我发现错误是由示例 dag 的不同目录位置和我们的 dag 文件夹设置引起的。在我的情况下,文件夹 2020-01-04 上方的 7 个文件夹是 /media/radifar。在您的情况下,文件夹 2019-12-18 上方的 4 文件夹是 /usr/local。这就是引发 PermissionError 的原因。

    我可以通过清理 AIRFLOW_HOME 文件夹然后运行 ​​airflow versionset the load_example to False in airflow.cfg 来解决这个问题。然后运行airflow initdb。之后我可以毫无错误地使用气流。

    【讨论】:

    • 对我来说 load_examples = False 足以解决问题。
    • 关闭示例也为我解决了这个错误。
    • 我已经设置了load_examples = False,但我仍然收到 Permission denied 错误。 airflow inidb 和气流 UI 直到昨天一切正常,但今天我收到了这个错误。有人可以帮忙吗?
    • @alex 是解决了它。对我来说,这与权限问题有关。我将权限更改为 777,这对我有帮助。您现在遇到的错误是什么?
    • 好有趣 - 所以您更改了 /scheduler 日志文件夹的权限?我在这里发布了我的问题stackoverflow.com/questions/63510335/…这是在 kubernetes 上运行的气流
    【解决方案4】:

    我解决了这个问题:在我的情况下,问题是卷安装文件夹 logsdags 没有写权限。我添加了它

    chmod -R 777 dags/
    chmod -R 777 logs/
    

    在 docker-composer 文件中,它们被挂载为

        volumes:
          - ./dags:/opt/bitnami/airflow/dags
          - ./logs:/opt/bitnami/airflow/logs
    

    【讨论】:

      猜你喜欢
      • 2017-08-22
      • 2013-03-19
      • 1970-01-01
      • 2019-01-21
      • 1970-01-01
      • 2017-01-07
      • 2017-04-20
      • 2011-06-11
      • 2014-07-15
      相关资源
      最近更新 更多