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 解析变慢常常先于任务失败出现,值得单独设告警项,而不是只在任务失败时才被动发现。
只看任务失败告警、忽略调度延迟指标,定位时会绕远路:任务没失败但整体产出晚了,通常是调度侧容量或解析耗时的问题。
指标面板也要有责任人:建好之后无人维护,指标名随版本变更后图会悄悄断线,很长时间没人注意,等于监控失效。