将日志写入 Google Cloud Storage¶
远程记录到 Google Cloud Storage 使用现有的 Airflow 连接来读取或写入日志。如果您没有正确设置连接,此过程将失败。
按照以下步骤启用 Google Cloud Storage 日志记录。
要启用此功能,airflow.cfg
必须配置为以下示例所示
[logging]
# Airflow can store logs remotely in AWS S3, Google Cloud Storage or Elastic Search.
# Users must supply an Airflow connection id that provides access to the storage
# location. If remote_logging is set to true, see UPDATING.md for additional
# configuration requirements.
remote_logging = True
remote_base_log_folder = gs://my-bucket/path/to/logs
remote_log_conn_id = my_gcs_conn
默认情况下,应用程序默认凭据用于获取凭据。您还可以在
[logging]
部分中设置google_key_path
选项,如果您想使用自己的服务帐号。确保使用这些凭据,您可以读取和写入
remote_base_log_folder
中上面定义的 Google Cloud Storage 存储分区。安装
google
包,如下所示:pip install 'apache-airflow[google]'
。重新启动 Airflow Web 服务器和调度程序,并触发(或等待)新的任务执行。
验证您定义的存储分区中是否显示新执行任务的日志。
验证 Google Cloud Storage 查看器是否在 UI 中工作。拉起新执行的任务,并验证您看到类似于以下内容的内容
*** Reading remote log from gs://<bucket where logs should be persisted>/example_bash_operator/run_this_last/2017-10-03T00:00:00/16.log.
[2017-10-03 21:57:50,056] {cli.py:377} INFO - Running on host chrisr-00532
[2017-10-03 21:57:50,093] {base_task_runner.py:115} INFO - Running: ['bash', '-c', 'airflow tasks run example_bash_operator run_this_last 2017-10-03T00:00:00 --job-id 47 --raw -S DAGS_FOLDER/example_dags/example_bash_operator.py']
[2017-10-03 21:57:51,264] {base_task_runner.py:98} INFO - Subtask: [2017-10-03 21:57:51,263] {__init__.py:45} INFO - Using executor SequentialExecutor
[2017-10-03 21:57:51,306] {base_task_runner.py:98} INFO - Subtask: [2017-10-03 21:57:51,306] {models.py:186} INFO - Filling up the DagBag from /airflow/dags/example_dags/example_bash_operator.py
注意远程日志文件的路径列在第一行。
字段 remote_logging
的值必须始终设置为 True
才能使此功能正常工作。关闭此选项将导致数据不会发送到 GCS。
选项 remote_base_log_folder
包含指定要使用的处理程序类型的 URL。要与 GCS 集成,此选项应以 gs://
开头。URL 的路径部分指定 GCS 中日志对象的存储分区和前缀 gs://my-bucket/path/to/logs
在 my-bucket
中写入日志,前缀为 path/to/logs
。
可以在 [logging]
部分中设置 google_key_path
选项,以指定 服务帐号密钥文件 的路径。如果省略,将使用基于 应用程序默认凭据 的身份验证和授权。请确保使用这些凭据可以读取和写入日志。
注意
上述凭据与使用 google_cloud_default
连接配置的凭据不同。它们通常应不同于 google_cloud_default
凭据,仅具有读取和写入日志的能力。出于安全原因,将日志读取器的访问权限限制为仅允许读取和写入日志是一项重要的安全措施。