使用Prometheus监控Airflow DAGs时无法获取指定指标的技术求助
Airflow DAG监控需求解决方案(Prometheus+Grafana v8.3.10)
环境信息
- Grafana版本:v8.3.10
- 操作系统:Windows 10
- 监控方案:通过Prometheus采集Airflow内置指标
待解决需求及实现方法
1. 取一天内多次运行DAG的最后一次运行状态
利用PromQL的last_over_time函数,针对airflow_dag_run_state指标筛选1天内的最新状态数据:
last_over_time(airflow_dag_run_state{state=~"success|failed|running"}[1d]) by (dag_id, state)
在Grafana面板中,可通过标签过滤或转换设置,仅保留每个dag_id对应的最新状态条目(指标值为1的状态即为当前生效状态)。
2. 获取DAG成功/失败的时间戳
借助airflow_dag_run_end_time指标(对应DAG运行结束时间),结合state标签筛选目标状态的时间戳,用last_over_time取1天内的最新记录:
last_over_time(airflow_dag_run_end_time{state=~"success|failed"}[1d]) by (dag_id)
在Grafana面板的显示设置中,将指标的Unit设置为Time > Datetime,即可将时间戳转换为可读的日期时间格式。
3. 统计DAG失败次数及失败后的重跑次数
失败次数统计
通过count_over_time函数统计1天内标记为失败的DAG Run数量:
count_over_time(airflow_dag_run_state{state="failed"}[1d]) by (dag_id)
重跑次数统计
Airflow的airflow_dag_run_try_number指标记录了每个DAG Run的尝试次数(初始尝试为1,每重试一次加1),因此实际重跑次数为try_number - 1。用以下PromQL统计1天内的总重跑次数:
sum_over_time((airflow_dag_run_try_number{state="failed"} - 1)[1d]) by (dag_id)
内容的提问来源于stack exchange,提问作者Akshay15
相关产品推荐
相关产品推荐

