MONITORING · 指标体系 / 告警治理

监控告警速查

从 RED / USE / 黄金四指标的选型方法论,到 Prometheus 指标类型与 PromQL、告警分级路由,再到 Grafana 看板、日志链路与 SLO 治理,监控告警方向的 39 条高频要点一张表收齐,随查随用。

39条速查 6大主题 持续更新

📖 速查表

点击展开各小节

📊 指标方法论
方法论核心维度适用场景
RED 方法 Rate 请求速率、Errors 错误率、Duration 耗时分布,三个指标刻画一个服务的外在健康面 在线服务(Web / RPC / API)首选 面向服务
USE 方法 Utilization 使用率、Saturation 饱和度、Errors 错误数,从资源视角回答「忙不忙、撑不撑得住、坏没坏」 基础设施资源(CPU / 内存 / 磁盘 / 网络)面向资源
谷歌黄金四指标 延迟、流量、错误、饱和度,直接对应用户可感知的服务质量,是 SLO 目标的天然来源 整体服务质量度量与 SLO 制定 面向用户
组合用法 服务层用 RED、资源层用 USE、全局用黄金四指标,三层拼出完整指标体系,避免「只有 CPU 曲线」式监控 自上而下补齐三层
🌡️ Prometheus 核心
类型 / 函数 / Exporter说明示例 / 要点
Counter 计数器 只增不减的累计值,适合请求数、错误数、任务完成数;直接看原始值无意义,必须算速率 rate(http_requests_total[5m]) 配 rate 使用
Gauge 仪表盘 可增可减的瞬时值,适合内存占用、并发连接数、队列长度、温度等「当前水位」 jvm_memory_used_bytes
Histogram 直方图 服务端分桶统计样本分布,可跨实例聚合后再算分位数,是请求耗时统计的首选 http_request_duration_seconds_bucket
Summary 摘要 客户端预计算好分位数直接输出,无法把多实例聚合到一起算全局 P99 分布式场景优先 Histogram 可聚合优先
rate() 取区间内的平均增长率,自动处理计数器重置(进程重启),平滑适合做告警判断 rate(errors_total[5m]) > 0 告警常用
irate() 只用区间内最后两个样本算瞬时速率,反应灵敏但毛刺多,适合看板观察突变 irate(http_requests_total[5m]) 看板用 irate,告警用 rate
histogram_quantile() 从直方图 bucket 计算分位数,P99 延迟告警与看板的标准写法 histogram_quantile(0.99, sum by (le) (rate(d_bucket[5m])))
node-exporter 主机层指标采集:CPU、内存、磁盘、网络、文件系统,每台机器部署一个实例 配 USE 方法看资源三件套 主机标配
mysqld / redis-exporter 中间件指标:连接数、QPS、慢查询、主从延迟、缓存命中率等,暴露给 Prometheus 抓取 连接池打满、慢查询突增告警的主数据源
blackbox-exporter 黑盒拨测:从外部发起 HTTP / TCP / ICMP / DNS 探测,监控端到端可用性与证书有效期 证书 30 天 过期预警 站在用户视角
🚨 告警规则与路由
主题 / 级别说明要点
规则书写要点 指标语义明确、阈值基于容量评估而非拍脑袋、必须带 for 防抖、标签标注 severity 与 team 便于路由 一条规则只回答一个问题 可行动性优先
for 持续时间 条件持续满足一段时间才触发,过滤瞬时抖动;一般取 1~5 分钟,按业务容忍度调整 for: 3m 防毛刺误报
P0 致命 核心功能完全不可用、数据丢失、资金损失,影响面大且扩散中 5 分钟内响应,电话 / 短信唤醒 7×24
P1 严重 核心功能部分受损或降级运行,用户可感知但还有绕过手段 15 分钟内响应,IM 群 + 电话
P2 一般 非核心功能异常、指标越过水位线但服务仍正常 工作时间 IM 处理,当日闭环
P3 提醒 预警类:容量趋势、证书临期、版本陈旧,不紧急但放着会变成事故 日报 / 周会跟进排期 隐患清零
Alertmanager 路由 按 severity、team 等标签把告警树状分发到不同接收器:邮件、IM 群机器人、电话平台 route → matchers → receiver 按标签分发
抑制与静默 抑制:高级别告警存在时压掉同批低级别(宕机压掉一切衍生告警);静默:发布窗口临时屏蔽指定标签的告警 inhibit_rules / silence 降噪两大件
groups: - name: http-alerts rules: - alert: HighErrorRate expr: rate(http_requests_total{status=~"5.."}[5m]) / rate(http_requests_total[5m]) > 0.01 for: 3m labels: { severity: P1, team: backend } annotations: summary: "5xx 错误率超过 1%,已持续 3 分钟"
📈 Grafana 看板
主题说明要点
Time series 时序面板 最常用的趋势面板:请求速率、错误率、延迟分位数随时间的变化曲线,看拐点与突变最直观 配 rate() 与分位数函数 默认首选
Heatmap / 表格 / 仪表 热力图看耗时分布随时间的变化;表格看 TopN 排行(最慢接口、最多错误实例);仪表看单一水位(磁盘使用率) 分布用热力、排行用表格 按数据形态选型
变量与看板复用 $env$service 等模板变量做成一套看板,切换下拉框即可在不同环境 / 服务间复用 一套看板多环境
看板组织 总览层(全局健康水位)→ 服务层(RED 三指标)→ 实例层(单机明细),逐层下钻定位 总览 → 服务 → 实例
看板纪律 一张看板回答一个核心问题;大屏只放核心水位与 SLO 达成率,装饰性图表一律不放 少即是多 信息密度优先
📜 日志与链路
组件 / 概念说明要点
ELK 组件分工 Elasticsearch 负责存储与全文检索,Logstash 负责采集与解析,Kibana 负责查询与可视化 功能全但资源开销大 全家桶
EFK 轻量采集 用 Filebeat / Fluentd 替代 Logstash 做采集端,资源占用更低,Kubernetes 场景多以 DaemonSet 方式部署 采集轻量化 K8s 标配
Loki 一句话定位 只对标签建索引、不对正文建全文索引的轻量日志系统,与 Grafana 原生集成,存储成本远低于 ES 先按标签过滤再看原文 省成本
Trace 分布式链路 OpenTelemetry / SkyWalking 记录一次请求跨服务的完整调用路径与各段耗时,一眼定位慢在哪一环 微服务排障的地图 跨服务定位
TraceId 贯通三支柱 日志、指标、链路统一携带 TraceId:从告警指标下钻到链路,再一键跳到相关日志,三支柱串成一条线 可观测性三支柱
🎯 SLO 与告警治理
概念 / 实践说明要点
SLI 指标 服务质量的测量口径:如请求成功率、P99 延迟、数据新鲜度,从用户视角选取 先定口径再定目标
SLO 目标 对 SLI 设定的内部目标值,如「成功率 ≥ 99.9%」「P99 < 300ms」,决定研发与运维的优先级 留有余量、可达成 内部承诺
SLA 协议 对外的合同条款,含违约赔偿,是法律承诺;SLO 要比 SLA 收得更紧才守得住 SLA < SLO 留缓冲
错误预算 1 - SLO 目标的可失败余量:99.9% 即每月约 43 分钟;预算烧完就冻结功能发布、优先修稳定性 烧完即冻结发布
误报治理 · 合并 同一根因引发的多条告警聚合为一条事件,按事件响应而非逐条轰炸,降低告警疲劳 收敛后再通知 聚合降噪
误报治理 · 根因消除 同一条告警反复触发说明阈值或基线错了:重评容量、改用分位数或同环比,而不是简单调灵敏度 治标更治本 基线重估
值班 Oncall 要点 交接记录未闭环问题与风险点;每个 P0 / P1 告警配 Runbook(现象 → 定位 → 处置 → 升级路径),值班照单执行 交接 + Runbook