将日志写入 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 的链接。