【问题标题】:Airflow 1.9 logging to s3, Log files write to S3 but can't read from UIAirflow 1.9 记录到 s3,日志文件写入 S3 但无法从 UI 读取
【发布时间】:2018-03-01 12:33:43
【问题描述】:

我一直在查看有关此主题的各种答案,但未能找到可行的解决方案。

我有气流设置以记录到 s3,但 UI 似乎只使用基于文件的任务处理程序,而不是指定的 S3。

我的 s3 连接设置如下

Conn_id = my_conn_S3
Conn_type = S3
Extra = {"region_name": "us-east-1"}

(ECS实例使用拥有s3全权限的角色)

我还创建了一个带有以下设置的 log_config 文件

remote_log_conn_id = my_conn_S3

encrypt_s3_logs = False

logging_config_class = log_config.LOGGING_CONFIG

task_log_reader = s3.task

在我的日志配置中,我有以下设置

LOG_LEVEL = conf.get('core', 'LOGGING_LEVEL').upper()
LOG_FORMAT = conf.get('core', 'log_format')

BASE_LOG_FOLDER = conf.get('core', 'BASE_LOG_FOLDER')
PROCESSOR_LOG_FOLDER = conf.get('scheduler', 'child_process_log_directory')

FILENAME_TEMPLATE = '{{ ti.dag_id }}/{{ ti.task_id }}/{{ ts }}/{{ try_number }}.log'
PROCESSOR_FILENAME_TEMPLATE = '{{ filename }}.log'

S3_LOG_FOLDER = 's3://data-team-airflow-logs/airflow-master-tester/'

LOGGING_CONFIG = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'airflow.task': {
            'format': LOG_FORMAT,
        },
        'airflow.processor': {
            'format': LOG_FORMAT,
        },
    },
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
            'formatter': 'airflow.task',
            'stream': 'ext://sys.stdout'
        },
        'file.processor': {
            'class': 'airflow.utils.log.file_processor_handler.FileProcessorHandler',
            'formatter': 'airflow.processor',
            'base_log_folder': os.path.expanduser(PROCESSOR_LOG_FOLDER),
            'filename_template': PROCESSOR_FILENAME_TEMPLATE,
        },
        # When using s3 or gcs, provide a customized LOGGING_CONFIG
        # in airflow_local_settings within your PYTHONPATH, see UPDATING.md
        # for details
        's3.task': {
            'class': 'airflow.utils.log.s3_task_handler.S3TaskHandler',
            'formatter': 'airflow.task',
            'base_log_folder': os.path.expanduser(BASE_LOG_FOLDER),
            's3_log_folder': S3_LOG_FOLDER,
            'filename_template': FILENAME_TEMPLATE,
        },
    },
    'loggers': {
        '': {
            'handlers': ['console'],
            'level': LOG_LEVEL
        },
        'airflow': {
            'handlers': ['console'],
            'level': LOG_LEVEL,
            'propagate': False,
        },
        'airflow.processor': {
            'handlers': ['file.processor'],
            'level': LOG_LEVEL,
            'propagate': True,
        },
        'airflow.task': {
            'handlers': ['s3.task'],
            'level': LOG_LEVEL,
            'propagate': False,
        },
        'airflow.task_runner': {
            'handlers': ['s3.task'],
            'level': LOG_LEVEL,
            'propagate': True,
        },
    }
}

我可以在 S3 上看到日志,但是当我导航到 UI 日志时,我得到的只是

*** Log file isn't local.
*** Fetching here: http://1eb84d89b723:8793/log/hermes_pull_double_click_click/hermes_pull_double_click_click/2018-02-26T11:22:00/1.log
*** Failed to fetch log file from worker. HTTPConnectionPool(host='1eb84d89b723', port=8793): Max retries exceeded with url: /log/hermes_pull_double_click_click/hermes_pull_double_click_click/2018-02-26T11:22:00/1.log (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fe6940fc048>: Failed to establish a new connection: [Errno -2] Name or service not known',))

我可以在日志中看到它成功导入了 log_config.py(我也包含了一个 init.py)

不明白为什么它在这里使用 FileTaskHandler 而不是 S3

任何帮助都会很棒,谢谢

【问题讨论】:

    标签: amazon-s3 airflow


    【解决方案1】:

    在我的情况下,这里的问题不是气流。

    我可以去 gitter 频道和那里的人交谈。

    将打印语句放入正在运行的 python 代码中后,我能够在这行代码中捕获异常。

    https://github.com/apache/incubator-airflow/blob/4ce4faaeae7a76d97defcf9a9d3304ac9d78b9bd/airflow/utils/log/s3_task_handler.py#L119

    例外是 SSLContext 上的最大深度问题,在网上浏览后似乎是由于使用了 gevent 和 unicorn 的某种组合。

    https://github.com/gevent/gevent/issues/903

    我将其切换回同步,并且不得不将 AWS ELB 侦听器更改为 TCP,但之后日志通过 UI 工作正常

    希望这对其他人有所帮助。

    【讨论】:

    • 这仍然是气流 1.10 中的一个问题并帮助了我。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2020-05-28
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 2018-10-28
    • 1970-01-01
    • 2022-11-09
    相关资源
    最近更新 更多