监控指标体系:四大黄金信号与关键业务指标选择
大家好,我是老张。做SRE这么多年,踩过的坑比吃过的盐还多。今天咱们聊聊监控指标体系,说白了就是——你到底该监控什么?
很多团队一上来就搞几百个指标,结果告警天天响,真正出问题的时候反而被淹没了。我见过最夸张的,一个业务挂了半小时,告警群里刷了2000多条消息,愣是没人发现核心接口已经超时了。为什么会这样?因为指标选错了。
核心观点:监控不是越多越好,而是越准越好。你只需要关注那些真正能反映系统健康状态的指标。
一、四大黄金信号:Google SRE的经典框架
Google的SRE团队总结了一套方法论,叫「四大黄金信号」。我这些年做过的项目,不管是大厂还是创业公司,这套框架基本都能套用。你想想看,一个系统再复杂,归根结底不就是这四件事吗?
1. 延迟(Latency)
延迟就是请求从发出到收到响应的时间。说白了,用户等得久不久。
我个人的习惯是,把延迟拆成两部分看:
- 服务端延迟:请求到达服务到处理完成的时间
- 网络延迟:数据在网络中传输的时间
我在项目中遇到过一件事:有个接口的P99延迟突然从200ms飙到2s,但P50还是正常的。一开始大家都觉得是偶发问题,没当回事。结果过了半小时,整个服务雪崩了。后来一查,是某个慢查询把数据库连接池占满了。嗯,这里要注意——只看平均值会骗人,一定要关注高百分位延迟。
实战建议:重点关注P99和P999的延迟。如果P99超过了你SLA的阈值,哪怕P50再低,也要立刻处理。
2. 流量(Traffic)
流量就是系统承受的请求量。QPS、RPS、TPS,这些都是流量指标。
流量监控的核心目的有两个:
- 容量规划:流量涨了,你的资源够不够?
- 异常检测:流量突然暴增或暴跌,是不是出问题了?
我曾经遇到过一个案例:某电商平台大促期间,流量比平时涨了10倍,但监控只告警了CPU使用率。结果呢?数据库连接池先爆了,然后整个系统挂了。流量监控不只是看QPS,还要看每个下游组件的承载能力。
3. 错误(Errors)
错误包括显式错误(HTTP 5xx)和隐式错误(返回200但内容不对)。
这里有个坑——很多人只监控HTTP状态码。但你想过没有,一个接口返回200,但返回的数据是空的,这算不算错误?当然算!
避坑指南:我曾经因为只监控了HTTP 5xx,漏掉了一个严重的业务错误。那次是支付接口返回了200,但实际支付失败了。用户投诉了一堆,我们才发现。从那以后,我要求所有核心接口必须上报业务错误码。
错误率监控的黄金法则是:
- 显式错误:HTTP 4xx/5xx,TCP连接失败等
- 隐式错误:业务逻辑错误、数据校验失败、超时但返回200
- 基础设施错误:磁盘满、内存OOM、网络丢包
4. 饱和度(Saturation)
饱和度衡量的是系统资源被用到了什么程度。CPU、内存、磁盘、网络带宽、连接池、线程池……这些都是资源。
饱和度监控的精髓在于——找到瓶颈资源。一个系统可能有100个指标,但真正决定性能的往往只有1-2个瓶颈。
我个人的经验是,饱和度告警的阈值不要设得太高。比如CPU到95%才告警,那时候已经来不及了。我一般设到70%-80%就开始预警,留出缓冲时间。
关键点:饱和度不是「满了才告警」,而是「快满了就告警」。你要给运维团队留出处理时间。
二、如何选择关键业务指标
四大黄金信号是通用框架,但具体到每个业务,指标选择是不一样的。我见过很多团队,直接把四大黄金信号照搬过来,结果发现根本用不上。为什么?因为业务场景不同。
第一步:梳理业务链路
先画出你的核心业务链路。比如一个电商系统:
- 用户打开App → 首页加载 → 搜索商品 → 查看详情 → 加入购物车 → 下单 → 支付
每个环节都有对应的技术指标。但你不能全监控,要挑出最关键的。
第二步:定义SLA/SLO
没有SLA,你都不知道什么算「正常」。我建议每个核心接口都定义三个指标:
| 指标 | 目标值 | 告警阈值 |
|---|---|---|
| 延迟P99 | < 200ms | > 500ms |
| 错误率 | < 0.1% | > 1% |
| 可用性 | 99.99% | < 99.9% |
第三步:选择「北极星指标」
每个业务只能有1-2个北极星指标。什么是北极星指标?就是那个最能反映业务健康度的指标。
举个例子:
- 支付系统:支付成功率
- 搜索系统:搜索结果返回时间
- 视频平台:首帧加载时间
- IM系统:消息送达率
我的经验:北极星指标一定要和业务方对齐。我曾经帮一个团队选指标,技术团队选了「接口延迟」,但业务方关心的是「用户下单成功率」。这两个指标有时候是冲突的——接口延迟低不代表下单成功。最后我们统一了「下单成功率」作为北极星指标。
三、知识体系总览
下面这张图是我自己画的,把四大黄金信号和业务指标选择的关系梳理清楚了。你一看就明白。
四、总结一下
四大黄金信号是监控的骨架,关键业务指标是监控的灵魂。没有骨架,监控是散的;没有灵魂,监控是空的。
我最后想说的是——不要追求完美。很多团队花几个月设计监控指标体系,结果上线后发现根本用不上。我的建议是:先选3-5个核心指标跑起来,然后根据实际效果不断迭代。监控是活的,不是死的。
一句话记住:监控指标不是越多越好,而是越准越好。每个指标都要能回答一个问题——「系统现在健康吗?」
公众号:蓝海资料掘金营,微信deep3321