关于管理完善工作流程的日志

问题描述

我正在将完美的工作流程用于业务应用程序。

我对存储在Postgresql中的日志有疑问。

如果每天将日志保存在postgresql服务器上,则数据量将很大。

是否有一种机制可以旋转该日志并将其写入文本文件

还可以在将数据从Postgresql表写入文本文件等之后删除相应的记录吗?

解决方法

由于您正在运行Prefect Server实例,因此编写连接到postgres容器的Flow并将日志存档到某种类型的云存储(GCS,S3等)中是很有意义的。我可能会这样考虑:

  1. 使用Prefect Client收集所有早于某个日期的Flow Run的ID。
  2. 连接到postgres并从日志表中选择具有那些Flow Run ID的日志的日志
  3. 根据喜好将这些日志写入CSV / SQL / Text
  4. 从postgres删除那些日志
,

气流日志按照docs存储在$ AIRFLOW_HOME / {dag_id} / {task_id} / {execution_date} / {try_number} .log中,而不存储在气流数据库中。 气流数据库(postgres,mysql)仅存储元数据,以在气流UI上显示作业/任务的信息(任务名称,任务名称,时间)。

Airflow的主要建议是编排和监视任务,如果不需要历史日志,则可以选择其他解决方案,例如unix的crontab或Windows的任务计划程序。 另一个解决方案是创建一个shell脚本来删除气流服务器上的日志,这不是最佳实践,但是您可以这样做