Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1
本页介绍了如何为新建或现有环境启用将 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
创建环境时,请在 Environment > 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
构建
environments.patch
API 请求。在此请求中:
在
updateMask
参数中,指定config.dataRetentionConfig.taskLogsRetentionConfig.storageMode
掩码。在请求正文中,指定 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"
}
}
}
}