状态大小监控与动态扩缩容 - 第1节

为什么需要状态监控?

做 SRE 这些年,我见过太多系统在半夜突然崩溃。没有监控,你连崩溃的原因都找不到。说白了,监控就是系统的眼睛和耳朵。

你想想看,一个线上服务跑得好好的,突然用户反馈说打不开了。你登录服务器一看,CPU 100%,内存快满了。但问题是——什么时候开始满的? 是慢慢涨上来的,还是突然爆发的?没有历史数据,你只能靠猜。

我个人习惯,任何系统上线前,第一件事就是搭监控。不是等出问题了再补,而是从一开始就埋好探针。这就像盖楼之前先画图纸,而不是等楼歪了再找原因。

核心观点: 监控不是成本,而是保险。它帮你回答三个问题——系统现在健康吗?过去发生了什么?未来可能出什么问题?

状态监控到底监控什么?

很多人以为监控就是看 CPU、内存、磁盘。嗯,这些确实重要,但远远不够。我遇到过最坑的一次:所有基础指标都正常,CPU 30%,内存还有一半,但用户就是访问不了。后来发现是应用层的连接池满了,基础指标根本看不出来。

所以,状态监控要分层来看:

  • 基础设施层:CPU、内存、磁盘、网络 I/O
  • 中间件层:数据库连接数、消息队列堆积、缓存命中率
  • 应用层:请求延迟、错误率、吞吐量
  • 业务层:订单量、注册数、支付成功率

每一层都有自己的关键指标。只看一层,就像盲人摸象。

监控的黄金指标

业界总结了三大黄金指标体系:USE、RED、Four Golden Signals。这三个体系各有侧重,我一般会组合使用。

USE 方法:资源视角

USE 是 Brendan Gregg 提出的,全称是 Utilization、Saturation、Errors。它主要针对资源层面。

指标 含义 举例
Utilization(利用率) 资源被使用的百分比 CPU 使用率 80%
Saturation(饱和度) 资源排队等待的程度 CPU 运行队列长度、磁盘 I/O 等待
Errors(错误数) 资源层面的错误计数 磁盘坏道、网卡丢包

我记得有一次排查数据库性能问题,CPU 利用率才 40%,但查询特别慢。用 USE 一看,磁盘饱和度很高,I/O 等待时间飙升。原来是磁盘的 IOPS 打满了,CPU 在等磁盘。这就是饱和度的价值——光看利用率是不够的。

我的习惯: 每个资源节点都配 USE 三件套。利用率设阈值告警,饱和度设趋势告警,错误设即时告警。这样基本能覆盖 80% 的资源问题。

RED 方法:服务视角

RED 是 Tom Wilkie 提出的,全称是 Rate、Errors、Duration。它主要针对服务层面。

指标 含义 举例
Rate(速率) 每秒请求数 QPS 5000
Errors(错误率) 请求失败的比例 5xx 错误率 0.1%
Duration(延迟) 请求处理时间 P99 延迟 200ms

RED 方法特别适合微服务架构。每个服务都暴露这三个指标,整个调用链的健康状况一目了然。我曾经在一个项目里,把所有微服务的 RED 指标汇总到一个大屏上。哪个服务延迟高了,哪个错误率上去了,一眼就能定位。

Four Golden Signals:Google 的实践

Google 的 SRE 团队提出了四个黄金信号,算是 USE 和 RED 的集大成者:

  1. 延迟(Latency):请求处理时间,区分成功和失败的延迟
  2. 流量(Traffic):系统承载的请求量
  3. 错误(Errors):显式错误(5xx)和隐式错误(返回正确但结果不对)
  4. 饱和度(Saturation):系统资源的使用程度

这四个信号覆盖了从用户感受到系统内部的全链路。我个人觉得,延迟是最敏感的指标。用户可能不在乎你的 CPU 是多少,但延迟高了,用户一定骂娘。

避坑提醒: 我曾经只监控平均延迟,结果 P99 已经飙到 5 秒了,平均值才 200ms。平均延迟会掩盖长尾问题。一定要看百分位延迟,特别是 P99 和 P999。

三个体系怎么选?

很多新手会问:到底用哪个?我的答案是:全都要,但各有侧重。

场景 推荐体系 原因
基础设施监控 USE 资源视角,直接看 CPU、内存、磁盘
微服务监控 RED 服务视角,关注请求和错误
全链路监控 Four Golden Signals 覆盖最全面,从用户到资源
容量规划 USE + Four Golden Signals 既要看资源饱和度,也要看流量趋势

说白了,没有银弹。我一般会先搭 Four Golden Signals 作为基础,然后对关键资源补充 USE,对关键服务补充 RED。这样三层覆盖,基本不会漏掉重要指标。

知识体系总览

下面这张图总结了本章的核心逻辑。你可以看到监控体系的分层结构,以及三个黄金指标体系的定位。

监控体系知识结构图 监控体系知识结构 为什么需要状态监控? 监控分层:基础设施 → 中间件 → 应用 → 业务 三大黄金指标体系 USE Utilization Saturation Errors RED Rate Errors Duration 4 Golden Signals 延迟 · 流量 错误 · 饱和度 组合使用:分层覆盖,不遗漏关键指标 资源视角 → USE 服务视角 → RED

这张图把本章的核心逻辑串起来了。从「为什么需要监控」出发,到监控分层,再到三大指标体系,最后落到组合使用。你可以在后续章节中反复参考这张图。

小结

监控体系不是一蹴而就的。我刚开始做 SRE 时,也走过弯路——指标堆了一大堆,真正出问题时却找不到关键信息。后来慢慢摸索出这套分层 + 黄金指标的方法,才算是有了章法。

记住几个要点:

  • USE 看资源,RED 看服务,Four Golden Signals 看全局
  • 不要只看平均值,百分位延迟才是真相
  • 监控要分层覆盖,从基础设施到业务指标
  • 先搭基础监控,再逐步完善,别想一步到位