【问题标题】:Airflow dags - reporting of the runtime for tracking purposesAirflow dags - 运行时报告以进行跟踪
【发布时间】:2021-06-02 23:10:04
【问题描述】:

我正在尝试找到一种方法来捕获 dag 统计信息 - 即在单独的表中各种 dag 及其任务的运行时间(开始时间、结束时间)、状态、dag id、任务 id 等

  • 找到了转到 elasticsearch/kibana 的默认日志,但不是将所需日志从那里拉回 s3 表的简单方法。
  • 构建一个单独的进程将这些日志加载到 s3 中会产生复制数据,并且还会生成大量其他与系统相关的日志,因此需要扫描和过滤的数据过多。
  • 向每个 dag 添加一个函数 - 必须修改每个 dag

还有什么其他的可能性使它不能有效地使用,任何其他气流内置功能都可以使用

【问题讨论】:

    标签: statistics runtime airflow metrics directed-acyclic-graphs


    【解决方案1】:

    您可以尝试使用 Apache 气流中提供的 Ad Hoc Query。

    此选项在 Data Profiling -> Ad Hoc Query 中可用,然后选择 airflow_db

    如果您想获取 DAG 统计信息,例如 start_time、end_time 等,您可以简单地按以下格式查询

    select start_date,end_date from dag_run where dag_id = 'your_dag_name'
    

    上述查询返回所有 DAG 运行的 DAG 的 start_time 和 end_time 详细信息。如果您希望获取特定运行的详细信息,则可以添加另一个过滤条件,如下所示

    select start_date,end_date from dag_run where dag_id = 'your_dag_name' and execution_date = '2021-01-01 09:12:59.0000' ##this is a sample time
    

    您可以从树或图表视图中获取此 execution_date。您还可以获取其他统计信息,例如 id、dag_id、execution_date、state、run_id、conf。

    您也可以参考https://airflow.apache.org/docs/apache-airflow/1.10.1/profiling.html#:~:text=Part%20of%20being%20productive%20with,application%20letting%20you%20visualize%20data。链接了解更多详情。

    【讨论】:

    • 谢谢,但是在 Airflow2 上,他们将此功能更改为 Data Profiling -> Ad Hoc Query 以运行 DAG 等,我需要将这些详细信息提取到单独的表中,因此尝试通过 dag 访问。
    【解决方案2】:

    你没有提到你需要这些信息是实时的还是批量的。

    由于您也不想使用 ES 日志,如果适合您的需要,您可以尝试airflow metrics

    然而,从数据库中提取这些信息效率不高,但无论如何,如果您不是在寻找实时数据收集,它仍然是一种选择。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-22
      • 2010-11-13
      • 1970-01-01
      • 1970-01-01
      • 2018-09-17
      相关资源
      最近更新 更多