将日志写入 Google Stackdriver¶
Airflow 可以配置为在 Google Stackdriver Logging 中读取和写入任务日志。
要启用此功能,必须在 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 = stackdriver:///logs-name
所有配置选项都在 [logging]
部分中。
默认情况下,应用程序默认凭据用于获取凭据。如果您想使用自己的服务帐户,还可以在
[logging]
部分中设置google_key_path
选项。请确保使用这些凭据,您可以读取/写入 Stackdriver。
安装
google
包,如下所示:pip install 'apache-airflow[google]'
。重新启动 Airflow Web 服务器和调度程序,并触发(或等待)新的任务执行。
验证日志是否显示在您定义的存储桶中新执行的任务中。
验证 Google Cloud Storage 查看器是否在 UI 中正常工作。 使用 Stackdriver,您应该看到实时拉取的日志
为了使此功能正常工作,字段 remote_logging
的值必须始终设置为 True
。关闭此选项将导致数据不会发送到 Stackdriver。
remote_base_log_folder
选项包含指定要使用的处理程序类型的 URL。 为了与 Stackdriver 集成,此选项应以 stackdriver://
开头。 URL 的路径部分指定日志的名称,例如 stackdriver:///airflow-tasks
将日志写入名为 airflow-tasks
下。
您可以在 [logging]
部分中设置 google_key_path
选项以指定 服务帐户密钥文件的路径。 如果省略,将使用基于 应用程序默认凭据的身份验证和授权。 确保使用这些凭据,您可以读取和写入日志。
注意
上述凭据与您使用 google_cloud_default
连接配置的凭据不同。 它们通常应与 google_cloud_default
的不同,仅具有读取和写入日志的功能。 出于安全原因,限制日志读取器的访问权限以仅允许读取和写入日志是一项重要的安全措施。
通过使用 logging_config_class
选项,您可以获得此处理程序的高级功能。 详细信息可在处理程序的文档中找到 - StackdriverTaskHandler
。
Google Stackdriver 外部链接¶
当配置为使用 Google Stackdriver 作为远程日志记录系统时,Airflow 会自动显示一个指向 Google Stackdriver 的链接。