任务运行日志找不到了——调度平台的可观测性
先说结论
调度可观测性三大支柱:日志管理、监控指标、调度大盘。日志要集中存储和便捷查看(Airflow Web UI/S3日志);指标要导出到监控系统(Prometheus+Grafana);大盘要一眼看到全局状态(多少任务成功/失败/运行中/排队中)。
先把这段讲顺;面试官追问时,再展开下面的原理和细节。
详细讲解
调度平台的可观测性直接影响排障效率。在某元宇宙社交公司用自建Crontab调度时,任务失败了只能SSH到服务器翻日志文件——哪台机器、哪个目录、什么时间的日志都要手动找。平均排障时间30分钟以上。迁移到Airflow后日志在Web UI一键查看,排障时间降到5分钟。
日志管理
# Airflow日志架构
# 默认:日志存在Worker本地文件系统
# 问题:Worker扩缩容后日志丢失/分散在多台机器
# 推荐:远程日志存储
# airflow.cfg
remote_logging = True
remote_log_conn_id = aws_default
remote_base_log_folder = s3://my-bucket/airflow-logs/
# 日志存到S3后:
# 1. Worker扩缩容日志不丢失
# 2. Airflow Web UI直接从S3读取日志展示
# 3. 可以用Athena/ES对日志做搜索分析
监控指标
| 指标 | 含义 | 告警阈值 | 监控工具 |
|---|---|---|---|
| dag_processing.last_duration | DAG文件扫描耗时 | 超30秒 | Prometheus+Grafana |
| scheduler.tasks.starving | 等待Worker的Task数 | 超20个 | Prometheus |
| executor.running_tasks | 正在运行的Task数 | 接近parallelism | Prometheus |
| dag_run.duration | DAG Run总耗时 | 超过SLA | Airflow SLA |
| task_instance.failures | Task失败数 | 日增超10 | 自定义告警 |
# Airflow导出指标到Prometheus
# airflow.cfg
statsd_on = True
statsd_host = statsd-exporter
statsd_port = 8125
# 用statsd-exporter转换成Prometheus格式
# Grafana连接Prometheus做可视化大盘
调度大盘——一眼看全局
好的调度大盘应该回答四个问题:① 现在有多少任务在跑/排队/失败?② 今天的ETL完成了吗?离SLA还有多久?③ 哪些任务失败了?失败原因是什么?④ 和昨天/上周比有什么异常?
实战经验:从SSH翻日志到5分钟排障
某元宇宙社交公司迁移到Airflow后的可观测性提升:
日志:Airflow Web UI点击Task就能看日志(之前SSH翻文件30分钟+现在1分钟)。日志存S3不怕丢。
指标:Prometheus+Grafana大盘实时看任务状态。排队Task数超20自动告警(说明Worker不够或有任务卡住)。
排障流程:收到告警 → Airflow UI看哪个Task失败 → 点击看日志确认原因 → 修复后点Clear重跑。全程Web操作不需要SSH。平均排障时间从30分钟降到5分钟。
面试高频追问
追问一:CeleryExecutor的日志在哪?
默认在Worker本地。如果Task在Worker-1上执行,日志在Worker-1的文件系统。Web UI通过HTTP从Worker获取日志。Worker宕机日志就没了。所以一定要开remote_logging存到S3/GCS。
追问二:怎么分析调度性能趋势?
用Grafana看历史指标:① DAG Run耗时趋势——逐渐变长说明数据增长或代码退化;② Task平均排队时间趋势——上升说明需要加Worker;③ 失败率趋势——突然上升说明有系统性问题。每周Review一次指标趋势,提前发现问题。
追问三:DataWorks的可观测性?
DataWorks内置了运维中心——任务状态、运行日志、基线监控、告警管理全在Web UI里。不需要自己搭Prometheus+Grafana。这是托管服务的好处——可观测性开箱即用。但自定义程度不如Airflow+Prometheus灵活。
总结
可观测性讲三支柱:① 日志(remote_logging存S3/GCS,Web UI一键查看);② 指标(Prometheus+Grafana,关注扫描耗时/排队数/失败数);③ 大盘(一眼看全局状态+SLA进度+异常任务)。能讲出从SSH翻日志到5分钟Web排障的效率提升,面试官觉得你重视调度的可运维性。
下一篇聊云调度平台:DataWorks和Airflow有什么本质区别?
你们调度平台的可观测性怎么样?评论区聊聊~
关注「Wood聊大数据」| 9年大数据老兵,聊技术、聊职场、聊成长