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

Cloud Composer 1 | Cloud Composer 2

このページでは、新規または既存の環境で環境のバケットへの 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"

      }
    }
  }
}

次のステップ