首页/数据/数据工程与 ETL 速查/Airflow 指标导出与告警

Airflow 指标导出与告警

把 Airflow 运行指标(任务成功失败数、调度延迟、DAG 解析耗时)导出到 StatsD 或 Prometheus,再在 Grafana 建面板与告警,能比只看界面更早发现调度劣化。

Airflow 指标导出与告警

Airflow 会把运行指标推送到 StatsD(airflow.cfg 的 [metrics] 段配置 statsd_host、statsd_port、statsd_prefix),再由 StatsD 或 statsd_exporter 转成 Prometheus 指标,最后在 Grafana 建面板与告警。值得单独盯的指标有三类:调度器心跳(是否还在正常调度)、DAG 解析耗时(dag_file_processing,解析变慢会让全部任务整体延迟)、任务状态计数(成功、失败、重试)。这些指标通常比页面上看到的失败更早暴露问题。

基本信息

配置位置airflow.cfg 的 [metrics] 段或对应环境变量
关键指标调度器心跳、DAG 解析耗时、任务状态计数、队列长度
链路应用推送 StatsD,转 Prometheus,Grafana 面板与告警
告警对象失败率突增、调度延迟、心跳丢失
配套调度器与 worker 日志集中采集,便于与指标对照

典型使用场景

  • 调度器进程存活但不再调度时,靠心跳缺失提前发现
  • DAG 数量增长导致解析变慢,用解析耗时判断是否需要拆分文件
  • 任务排队变长:判断是并发槽位不足还是单任务耗时上涨
  • 失败率突增时按 DAG 与任务聚合,快速定位受影响范围
  • 容量规划:用任务数与执行时长趋势评估调度器与 worker 规模

StatsD 配置

StatsD 配置
[metrics]
statsd_on = True
statsd_host = 127.0.0.1
statsd_port = 8125
statsd_prefix = airflow

# 说明一:statsd_on 在部分版本中已废弃,仅配置 host 与 port 即可启用
# 说明二:指标名随版本调整,建面板前先确认实际暴露的指标名
# 说明三:解析耗时与心跳类指标建议独立告警,不混在任务失败告警里

关键指标与判据

指标类别观察对象异常判据常见原因
调度器心跳调度器存活与调度循环心跳消失或停滞进程卡死或被杀
DAG 解析dag_file_processing耗时中位数持续上升单个 DAG 文件过大或导入过重
任务状态成功、失败、重试计数失败率突增数据源异常或代码变更
队列与并发排队任务数、运行槽位排队数持续升高池容量不足或长任务占用槽位
调度器心跳丢失、DAG 解析变慢常常先于任务失败出现,值得单独设告警项,而不是只在任务失败时才被动发现。
只看任务失败告警、忽略调度延迟指标,定位时会绕远路:任务没失败但整体产出晚了,通常是调度侧容量或解析耗时的问题。
指标面板也要有责任人:建好之后无人维护,指标名随版本变更后图会悄悄断线,很长时间没人注意,等于监控失效。

易错点

  • DAG 数量增长后解析时间飙升,不监控就表现为任务莫名延迟,排查时误怀疑数据源
  • 只看任务失败告警、忽略调度延迟与心跳指标,问题定位绕远路
  • 升级 Airflow 后指标名变化,原有 Grafana 面板断线却没有任何提示
  • StatsD 到 Prometheus 的转换服务单点部署,中间件挂掉后监控与告警同时失效

数据来源与参考

  • Apache Airflow 官方文档:Airflow Metrics(StatsD)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌