允许将日志保存到环境的存储桶

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

本页面介绍了如何为新环境或现有环境启用将 Airflow 任务日志保存到环境的存储桶的功能。

您可以选择将任务日志同步到环境的存储桶。

准备工作

  • 从 Cloud Composer 2.8.0 版开始,默认情况下,所有环境都不会将任务日志存储在环境的存储桶中。任务日志仍可在 Cloud Logging 和 Airflow 界面中查看。

  • 如果启用此功能,日志会同时保存到 Cloud Logging 和环境的存储桶。

  • 升级环境时,在环境的存储桶中保存日志的配置不会更改。例如,如果您将将日志保存到环境存储桶的环境升级到更高版本,则环境会继续将日志保存到环境的存储桶。

  • 如果停用将任务日志保存到环境存储桶的功能,则系统不会自动删除已保存到环境存储桶的日志。

  • 如需启用或停用此选项,您可以使用 Google Cloud CLI、Cloud Composer API 或 Terraform。您无法通过 Google Cloud 控制台更改此选项。

允许或禁止在创建环境时将任务日志保存到环境的存储桶

gcloud

创建环境时,以下参数指定如何保存 Airflow 任务日志:

  • --disable-logs-in-cloud-logging-only 参数用于将 Airflow 任务日志保存到环境的存储桶中。
  • --enable-logs-in-cloud-logging-only 参数会禁止将 Airflow 任务日志保存到环境的存储桶。日志只会保存到 Cloud Logging。
gcloud composer environments create ENVIRONMENT_NAME \
    --location LOCATION \
    --disable-logs-in-cloud-logging-only

请替换以下内容:

  • ENVIRONMENT_NAME:您的环境的名称。
  • LOCATION:环境所在的区域。

示例:

gcloud composer environments create example-environment \
    --location us-central1 \
    --disable-logs-in-cloud-logging-only

API

创建环境时,请在环境 > EnvironmentConfig > DataRetentionConfig > TaskLogsRetentionConfig 资源中,指定 Airflow 任务日志的保存方式:

  • CLOUD_LOGGING_AND_CLOUD_STORAGE 用于将日志保存到环境的存储桶和 Cloud Logging。
  • CLOUD_LOGGING_ONLY,用于仅在 Cloud Logging 中保存日志。
{
  "name": "projects/PROJECT_ID/locations/LOCATION/environments/ENVIRONMENT_NAME",
  "config": {
    "dataRetentionConfig": {
      "taskLogsRetentionConfig": {
        "storageMode": "CLOUD_LOGGING_AND_CLOUD_STORAGE"
      }
    }
  }
}

请替换以下内容:

  • ENVIRONMENT_NAME:您的环境的名称。
  • LOCATION:环境所在的区域。
  • PROJECT_ID项目 ID

示例:

// POST https://composer.googleapis.com/v1/{parent=projects/*/locations/*}/environments

{
  "name": "projects/example-project/locations/us-central1/environments/example-environment",
  "config": {
    "dataRetentionConfig": {
      "taskLogsRetentionConfig": {
        "storageMode": "CLOUD_LOGGING_AND_CLOUD_STORAGE"
      }
    }
  }
}

Terraform

创建环境时,task_logs_retention_config 代码块中的 storage_mode 字段指定必须如何保存 Airflow 任务日志:

  • CLOUD_LOGGING_AND_CLOUD_STORAGE 用于将日志保存到环境的存储桶和 Cloud Logging。
  • CLOUD_LOGGING_ONLY,用于仅在 Cloud Logging 中保存日志。
resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {

    data_retention_config {

      task_logs_retention_config {

        storage_mode = "CLOUD_LOGGING_AND_CLOUD_STORAGE"

      }
    }
  }

请替换以下内容:

  • ENVIRONMENT_NAME:您的环境的名称。
  • LOCATION:环境所在的区域。

示例:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {

    data_retention_config {

      task_logs_retention_config {

        storage_mode = "CLOUD_LOGGING_AND_CLOUD_STORAGE"

      }
    }
  }
}

为现有环境启用或停用将任务日志保存到环境存储桶的功能

gcloud

当您更新环境时,以下参数可以启用或停用将 Airflow 任务日志保存到环境的存储桶的功能:

  • --disable-logs-in-cloud-logging-only 参数用于将 Airflow 任务日志保存到环境的存储桶中。日志会保存到环境的存储桶和 Cloud Logging。
  • --enable-logs-in-cloud-logging-only 参数会禁止将 Airflow 任务日志保存到环境的存储桶。日志只会保存到 Cloud Logging。

如需将 Airflow 日志保存到环境的存储桶中,请执行以下操作:

gcloud composer environments update ENVIRONMENT_NAME \
    --location LOCATION \
    --disable-logs-in-cloud-logging-only

请替换以下内容:

  • ENVIRONMENT_NAME:您的环境的名称。
  • LOCATION:环境所在的区域。

示例:

gcloud composer environments update example-environment \
    --location us-central1 \
    --disable-logs-in-cloud-logging-only

API

  1. 构建 environments.patch API 请求。

  2. 在此请求中:

    1. updateMask 参数中,指定 config.dataRetentionConfig.taskLogsRetentionConfig.storageMode 掩码。

    2. 在请求正文中,指定必须如何保存 Airflow 任务日志:

      • CLOUD_LOGGING_AND_CLOUD_STORAGE 用于将日志保存到环境的存储桶和 Cloud Logging。
      • CLOUD_LOGGING_ONLY,用于仅在 Cloud Logging 中保存日志。
{
  "config": {
    "dataRetentionConfig": {
      "taskLogsRetentionConfig": {
        "storageMode": "CLOUD_LOGGING_AND_CLOUD_STORAGE"
      }
    }
  }
}

示例:

// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.dataRetentionConfig.taskLogsRetentionConfig.storageMode

{
  "config": {
    "dataRetentionConfig": {
      "taskLogsRetentionConfig": {
        "storageMode": "CLOUD_LOGGING_AND_CLOUD_STORAGE"
      }
    }
  }
}

Terraform

task_logs_retention_config 代码块的 storage_mode 字段中,指定必须如何保存 Airflow 任务日志:

  • CLOUD_LOGGING_AND_CLOUD_STORAGE 用于将日志保存到环境的存储桶和 Cloud Logging。
  • CLOUD_LOGGING_ONLY,用于仅在 Cloud Logging 中保存日志。
resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {

    data_retention_config {

      task_logs_retention_config {

        storage_mode = "CLOUD_LOGGING_AND_CLOUD_STORAGE"

      }
    }
  }

请替换以下内容:

  • ENVIRONMENT_NAME:您的环境的名称。
  • LOCATION:环境所在的区域。

示例:

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {

    data_retention_config {

      task_logs_retention_config {

        storage_mode = "CLOUD_LOGGING_AND_CLOUD_STORAGE"

      }
    }
  }
}

后续步骤