Google Stackdriver 上的 Airflow 远程日志存在问题

Issue with Airflow remote logs on Google Stackdriver

提问人:Ire00 提问时间:4/18/2023 更新时间:4/18/2023 访问量:89

问:

我已将 Airflow 2.5.1 部署在带有官方 helm 图表的 Kubernetes 集群上。执行者是 KubernetesExecutor。
我想在 Stackdriver 上远程写入和读取气流日志。
在我的代码中,我遵循了官方气流文档中描述的步骤,因此我修改了气流舵图,添加了以下环境变量:

# Environment variables for all airflow containers
env:
- name: "AIRFLOW__LOGGING__REMOTE_LOGGING"
  value: "True"
- name: "AIRFLOW__LOGGING__REMOTE_BASE_LOG_FOLDER"
  value: "stackdriver://airflow.task"
- name: "AIRFLOW__LOGGING__REMOTE_LOG_CONN_ID"
  value: "google_cloud_default" 

在 Stackdriver 中,我创建了存储桶“airflow.task”。

在气流中,我有一个这样的虚拟任务:

from airflow.models import Variable
# import the logging module
import logging

# get the airflow.task logger
task_logger = logging.getLogger("airflow.task")

def print_hello_world(ds):
    # with default airflow logging settings, DEBUG logs are ignored
    task_logger.debug("This log is at the level of DEBUG")

    # each of these lines produces a log statement
    print("This log is created with a print statement")
    task_logger.info("This log is informational")
    task_logger.warning("This log is a warning")
    task_logger.error("This log shows an error!")
    task_logger.critical("This log shows a critical error!")

当我运行任务时,我有两个问题:

  1. Airflow 的日志写入 Stackdriver 存储桶“_Default”而不是“airflow.task”中
  2. 在 airflow UI 和 Stackdriver 中,我只能看到内置任务日志,而看不到我的自定义日志(见下面的示例)。
[2023-04-18, 10:41:38 UTC] {standard_task_runner.py:55} INFO - Started process 36 to run task
[2023-04-18, 10:42:49 UTC] {local_task_job.py:276} WARNING - State of this instance has been externally set to success. Terminating instance.
[2023-04-18, 10:42:49 UTC] {process_utils.py:129} INFO - Sending Signals.SIGTERM to group 36. PIDs of all processes in the group: [36]
[2023-04-18, 10:42:49 UTC] {process_utils.py:84} INFO - Sending the signal Signals.SIGTERM to group 36

有人有什么建议吗?我已经在网上检查了这个问题,但我没有找到太多信息。

记录 气流 kubernetes-helm stackdriver google-cloud-stackdriver

评论


答: 暂无答案