本节摘要:监控的目标不是"有大盘",而是让异常在业务方之前被看见、在演变事故之前被处置。本节建立四层指标体系(集群、作业、算子、检查点),给出一套告警阈值的定法与"从告警到定位"的标准程序,并接入 Prometheus 生态。读完你应能把第 2、4 章学过的原理变成每天巡视的仪表读数。
每次复盘大事故,都有一句熟悉的质问:"业务都反馈半小时了,为什么监控没发现?"答案往往不是没有指标,而是指标没有组织:几百条曲线摊在盘上,没人知道哪几条是"生命体征"。本节的任务是把指标组织成体系——像查房一样分层:先看人在不在(集群层),再看呼吸稳不稳(作业层),再看四肢灵不灵(算子层),最后看心跳齐不齐(检查点层)。
集群层:人在不在。 活着的 TaskManager 数(骤降即宿主机或容器故障)、可用槽位数(低于已提交作业需求即资源危机)、作业总数与异常终止数。这一层回答"集群还活着吗",配最响的告警。
作业层:呼吸稳不稳。 作业状态(运行中、重启中、失败)、重启次数(短窗口内连跳说明在崩溃循环)、每秒流入流出记录数(流入正常而流出骤停,管道某处堵死)、水印延迟(事件时间落后墙钟的幅度,大屏类作业的生命体征)。这一层回答"作业还健康吗"。
算子层:四肢灵不灵。 每个算子的繁忙度与反压状态(第 2.3 节的缓冲池占用与信用读数)、各并行实例间的吞吐分布(陡然分化即数据倾斜征兆)、延迟直方图(处理耗时是否抬头)。这一层回答"堵在哪一节",是定位层的仪表。
检查点层:心跳齐不齐。 第 4.2 节立过规矩的四项——完成率、耗时、大小、对齐时长——在此落地为常驻曲线与告警规则。它回答"这次故障最多损失多少"。
| 层级 | 核心指标 | 告警触发示例 |
|---|---|---|
| 集群 | TaskManager 存活数、空闲槽位 | 存活数掉两成即 P1 告警 |
| 作业 | 状态、重启次数、水印延迟 | 水印延迟超五分钟告警 |
| 算子 | 反压状态、吞吐分布、繁忙度 | 反压持续三分钟告警 |
| 检查点 | 完成率、耗时、大小、对齐 | 连续两次失败即 P1 |
Flink 原生暴露指标,开启 Prometheus 汇报只需两段配置,随后用 Grafana 拼装四层视图、用告警规则引擎接值班通道:
# TaskManager 与 JobManager 的指标汇报器 metrics.reporter.prom.factory.class: org.apache.flink.metrics.prometheus.PrometheusReporter metrics.reporter.prom.port: 9250-9260
# 告警规则示例(Prometheus 规则语法,检查点连续失败即触发) groups: - name: flink-heartbeat rules: - alert: CheckpointFailedTwice expr: increases(flink_job_numberOfFailedCheckpoints[10m]) >= 2 labels: { severity: P1 } annotations: summary: "作业检查点连续失败,按 4.4 节诊断树处置"
两段配置之外有一条工程纪律更值钱:每条告警必须绑定处置动作。告警文案里写清楚"去哪张图、按哪节文档、第一步做什么",否则告警再多也只是焦虑放大器。本册各章排错节(4.4、6.4)就是处置文档的现成素材,告警文案直接引用章节即可。
值班收到告警后按固定顺序走,不走自由发挥。第一分钟:定性。看作业层——作业还活着吗?活着是性能病,死了是故障病,两者通道完全不同(性能病走 6.4 反压程序,故障病走恢复程序)。第二分钟:看心跳。检查点层四项指标有无异常,确定最近一个可恢复点距现在多久——这决定了最坏损失,也是要不要立刻升级响应的依据。第三分钟:分层下钻。算子层找拥堵节(反压视图里第一个忙起来的算子),集群层排除宿主机与资源问题。第四分钟:按预案行动或升级。有预案照做,没预案带齐信息(哪层指标、哪个算子、最近快照)升级找资深值班。四分钟的节奏练熟了,"监控没发现"的质问就再也落不到你头上。
⚠️ 常见坑:阈值拍脑袋。水印延迟与反压告警的阈值应从正常时段的基线分布取(比如基线尖峰加三倍余量),大促前再按预估流量上调——一律照抄模板阈值的告警系统,最终会在狼来了声中失聪。
接入之后,大盘的价值取决于拼装的纪律。三条原则值得抄走。原则一:一屏一事。每个视图只回答一个问题——"集群活着吗"一屏、"作业健康吗"一屏、"堵在哪"一屏;把上百条曲线挤进一屏的结果是谁也不看。原则二:基线上墙。每条关键曲线旁边画出正常基线带(近七天同时段的中位数区间),人眼对"偏离带子"的敏感度远高于对绝对值的敏感度。原则三:告警与视图同源。告警规则引用的指标必须能在某张视图里找到对应曲线,否则告警响起时值班人无法快速取证。
以大屏类作业为例,一屏最小集是六条曲线:流入记录数、流出记录数、水印延迟、检查点耗时、反压子任务数、宿主机磁盘写延迟。前两条看呼吸,中间两条看心跳,最后两条看拥堵与底层——六条曲线覆盖了本册出现过的全部主要故障的征兆(3 章的延迟类、4 章的心跳类、6 章的反压与磁盘类)。新作业上线时按这个最小集起盘,再按业务特性加曲线,比对着模板全量堆砌高效得多。
眼睛有了,双手还缺一场实战:下一节把大促零点的反压雪崩搬进解剖室,练一次从发现到止血的完整急救。