環境のバケットにログを保存する機能を有効にする

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

このページでは、新規または既存の環境で Airflow タスクログを環境のバケットに保存する方法について説明します。

オプションとして、環境のバケットへのタスクログの同期を有効にできます。

準備

  • Cloud Composer バージョン 2.8.0 以降、すべての環境ではデフォルトでタスクログが環境のバケットに保存されません。タスクログは、引き続き Cloud Logging と Airflow UI で使用できます。

  • この機能を有効にすると、ログは 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

環境を作成するときに、[Environment] > [EnvironmentConfig] > [DataRetentionConfig] > [TaskLogsRetentionConfig] リソースで Airflow タスクログの保存方法を指定します。

  • 環境のバケットと Cloud Logging にログを保存する場合は、CLOUD_LOGGING_AND_CLOUD_STORAGE
  • Cloud Logging にのみログを保存する場合は、CLOUD_LOGGING_ONLY
{
  "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 にログを保存する場合は、CLOUD_LOGGING_AND_CLOUD_STORAGE
  • Cloud Logging にのみログを保存する場合は、CLOUD_LOGGING_ONLY
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 にログを保存する場合は、CLOUD_LOGGING_AND_CLOUD_STORAGE
      • Cloud Logging にのみログを保存する場合は、CLOUD_LOGGING_ONLY
{
  "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 にログを保存する場合は、CLOUD_LOGGING_AND_CLOUD_STORAGE
  • Cloud Logging にのみログを保存する場合は、CLOUD_LOGGING_ONLY
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"

      }
    }
  }
}

次のステップ