咨询Airflow开源版替代仪表盘方案:两类DAG指标统计需求
开源Airflow仪表盘需求的替代方案
针对你需要的「过去一个月失败DAG数」和「含配置JSON且重运行的DAG数」两个指标,除了直接读取元数据库对接PowerBI,还有以下几个开源Airflow原生/适配的替代方案:
1. 自定义Airflow UI插件
Airflow支持通过插件扩展内置UI,你可以开发一个简单的插件,在Airflow控制台内直接展示这两个统计指标:
- 核心思路:基于Flask蓝图创建自定义页面,直接连接Airflow元数据库执行统计查询,将结果渲染成可视化表格/卡片。
- 示例查询片段:
- 过去一个月失败的DAG数量:
SELECT COUNT(DISTINCT dag_id) AS failed_dag_count FROM dag_run WHERE state = 'failed' AND start_date >= NOW() - INTERVAL '30 days'; - 含配置JSON且重运行的DAG数量:
SELECT COUNT(DISTINCT dag_id) AS rerun_with_conf_dag_count FROM dag_run WHERE conf IS NOT NULL AND run_id LIKE '%__rerun_%' -- Airflow重跑的run_id默认带该标识 AND start_date >= NOW() - INTERVAL '30 days';
- 过去一个月失败的DAG数量:
- 优势:无需额外工具,指标直接在Airflow UI内查看,运维成本低。
2. Airflow REST API + 轻量前端展示
如果已有内部前端体系,或者想做独立的轻量化仪表盘,可以直接调用Airflow v2.x提供的REST API获取数据:
- 核心步骤:
- 调用
/dags/dagRuns接口,过滤state=failed且start_date在过去一个月的DAG运行实例,统计去重后的dag_id数量。 - 调用同一接口,过滤
run_id包含__rerun_、conf非空且时间在过去一个月的实例,统计去重后的dag_id数量。
- 调用
- 优势:无需直接操作数据库,利用Airflow官方API保证兼容性,前端可灵活定制展示样式。
3. 自定义Metrics + Grafana监控面板
如果你的团队已经在用Prometheus+Grafana做监控,可以通过自定义Metrics来实现:
- 核心思路:
- 在DAG的
on_failure_callback中添加逻辑,当DAG失败时,向Prometheus/StatsD发送自定义指标(如airflow_dag_failed_total{dag_id="xxx"})。 - 在DAG重跑触发时(可通过判断
run_id是否含重跑标识),若conf非空,则发送airflow_dag_rerun_with_conf_total{dag_id="xxx"}指标。 - 在Grafana中创建面板,通过PromQL聚合过去一个月的指标数据,生成统计结果。
- 在DAG的
- 优势:融入现有监控体系,可结合其他Airflow指标做统一展示,支持告警配置。
4. CLI脚本+定时报表生成
如果不需要实时仪表盘,只需要定期获取统计结果,可以写Python脚本结合Airflow CLI或元数据库查询,定时生成报表:
- 示例逻辑:
- 用
airflow dags list-runs --state failed --start-date "$(date -d '30 days ago' +%Y-%m-%d)"获取失败的DAG运行实例,提取去重的dag_id计数。 - 用
airflow dags list-runs --start-date "$(date -d '30 days ago' +%Y-%m-%d)"获取所有运行实例,筛选run_id含__rerun_且conf非空的条目,统计去重dag_id数量。 - 将结果写入CSV或Markdown,通过Airflow的
EmailOperator定时发送给相关人员。
- 用
- 优势:实现简单,无需额外搭建服务,适合非实时的统计需求。
内容的提问来源于stack exchange,提问作者user2452057
相关产品推荐
相关产品推荐

