환경 버킷에 로그 저장 사용 설정

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_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에 로그를 저장하기 위한 CLOUD_LOGGING_AND_CLOUD_STORAGE입니다.
  • 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에 로그를 저장하기 위한 CLOUD_LOGGING_AND_CLOUD_STORAGE입니다.
      • 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에 로그를 저장하기 위한 CLOUD_LOGGING_AND_CLOUD_STORAGE입니다.
  • 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"

      }
    }
  }
}

다음 단계