You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Airflow scheduler故障时的Slack告警通知

认知验证

你的判断完全正确:Airflow 原生的DAG层面、任务层面的告警回调(比如on_failure_callback)完全依赖Scheduler进程正常运行、能解析DAG、调度任务执行并捕获状态异常。如果Scheduler进程崩溃、所在集群不可用,所有DAG内的告警逻辑都无法被触发,自然收不到故障通知。

实现Scheduler故障Slack告警的方案

方案1:配合Airflow健康检查+外部监控工具推送

Airflow 2.0+ 自带了健康检查端点,默认路径是/health,返回的响应中会明确包含Scheduler的存活状态:

  • 正常状态下scheduler字段的status值为healthy
  • Scheduler故障超过阈值(默认30s无心跳)时status值为unhealthy

你可以用公司现有监控工具(Prometheus+Alertmanager、Nagios、Zabbix等)按以下流程配置:

  • 定期请求Airflow的/health端点
  • 配置告警规则:当scheduler状态为unhealthy、或端点完全无法访问时,触发告警
  • 配置告警渠道对接Slack webhook,故障时直接推消息到指定Slack频道

如果你使用的是Airflow 1.x版本,没有自带/health端点,可以直接查询Airflow元数据库的scheduler_job表,取最新一条记录的latest_heartbeat字段,若该时间距当前时间超过30s即可判断Scheduler故障。

方案2:独立心跳检测任务

如果没有统一监控工具,也可以部署一个独立于Airflow集群的轻量定时任务(比如Linux crontab、云函数定时触发器),逻辑如下:

  • 配置一个专门的心跳DAG,设置为每5分钟运行一次,任务逻辑就是更新独立存储(比如Redis、对象存储)中保存的Airflow最后心跳时间
  • 独立定时任务每10分钟检查一次最后心跳时间:如果超过15分钟没有更新,说明Scheduler已经无法正常调度任务,直接调用Slack webhook推送告警

Slack告警配置示例

首先在Slack中创建对应应用,开启Incoming Webhooks功能,获取对应频道的webhook地址。如果用Alertmanager推送,配置参考如下:

receivers:
- name: 'slack-airflow-alerts'
  slack_configs:
  - channel: '#airflow-alerts'
    webhook_url: '替换为你的Slack webhook地址'
    text: "Airflow Scheduler故障告警:{{ .CommonAnnotations.summary }}\n故障详情:{{ .CommonAnnotations.description }}"

内容的提问来源于stack exchange,提问作者av abhishiek

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 05:27:03