2. 容量水位概念

2.1 容量水位的定义

容量水位(Capacity Watermark)是衡量系统资源使用程度与剩余能力的量化指标,它直接反映基础设施或应用组件在当前负载下距离容量瓶颈的“距离”。在 SRE 实践中,容量水位通常以百分比形式表达,例如“CPU 水位 72%”表示 CPU 已使用其额定容量的 72%,剩余 28% 可用于应对突发流量或业务增长。

核心公式: 容量水位 = (当前资源使用量 / 额定容量上限) × 100%

容量水位不同于简单的资源监控指标,它强调“相对于额定上限的比例关系”,因此天然具备可比较性和可预测性。不同资源(CPU、内存、磁盘、网络)的额定上限定义方式不同,但水位口径必须统一,才能形成有效的容量基线。

2.2 为什么需要容量水位

没有容量水位,运维团队只能看到零散的监控曲线,无法回答以下关键问题:

  • 容量是否健康? —— 当前水位是否在安全区间?
  • 何时需要扩容? —— 按当前增长趋势,多久会达到瓶颈?
  • 扩容多少合适? —— 水位基线应预留多少缓冲?
  • 故障是否与容量相关? —— 故障发生时水位是否已超阈值?

容量水位将分散的监控数据转化为统一的“健康度语言”,让 SRE、开发、业务团队能够基于同一套口径讨论容量规划。在 GameDay 演练中,容量水位是判断“系统是否处于容量风险状态”的核心判据,也是混沌工程注入压力后验证容量弹性的关键观测指标。

实践建议: 在 GameDay 演练开始前,先确定每个资源的“安全水位上限”(如 CPU 80%、内存 75%),演练过程中一旦水位突破该上限,立即触发告警并启动降级或扩容流程。

2.3 容量水位的核心指标

容量水位覆盖四大基础资源:CPU、内存、磁盘、网络。每类资源的额定上限定义、水位计算方式、典型瓶颈特征各不相同,下表给出完整对比:

资源类型 额定上限定义 水位计算公式 典型瓶颈特征 GameDay 关注点
CPU 物理核数 × 频率 × 超线程系数(或 vCPU 配额) CPU 使用率(user + system + iowait)/ 额定上限 高负载时响应延迟飙升、请求排队 突发流量下 CPU 是否快速逼近 100%
内存 物理内存总量(或容器/VM 分配上限) (已用内存 + 缓存 + 缓冲区)/ 额定上限 OOM Killer 触发、Swap 频繁换入换出 内存泄漏场景下水位是否持续攀升
磁盘 磁盘总容量(或分区/卷分配上限) 已用磁盘空间 / 总容量 磁盘写满导致服务只读、日志丢失 日志暴增或数据积压时磁盘水位变化
网络 网卡带宽(或连接数/吞吐量上限) 当前带宽使用量 / 额定带宽 丢包率上升、TCP 重传、连接超时 流量突增时带宽是否打满、连接池是否耗尽

2.4 容量水位分层模型

容量水位并非单一数值,而是从“资源层”到“服务层”再到“业务层”的分层体系。下图展示了容量水位的三层模型及其在 GameDay 演练中的映射关系:

容量水位分层模型 业务层水位 QPS / 响应时间 / 错误率 / 用户数 GameDay 目标:验证业务指标是否在容量水位突破前保持稳定 服务层水位 连接数 / 线程池 / 队列深度 / 缓存命中率 GameDay 目标:观察中间件/应用服务在资源压力下的行为 资源层水位 CPU / 内存 / 磁盘 / 网络 GameDay 目标:注入资源压力,验证水位告警与自动伸缩 水位传导方向 资源层水位上升 → 服务层水位恶化 → 业务层水位告警 GameDay 注入点 CPU 压力 / 内存泄漏 磁盘写满 / 网络延迟 从资源层向上传导

2.5 容量水位口径基线

“口径基线”是指容量水位计算时所采用的统一标准,包括额定上限的取值方式、水位计算的时间窗口、以及安全阈值的定义。没有统一口径,不同团队对同一系统的容量判断可能截然不同。下表列出常见的口径基线要素:

口径要素 说明 推荐基线值
额定上限 资源可使用的最大理论值(非瞬时峰值) CPU: vCPU 数 × 100%;内存: 物理总量 - 系统保留;磁盘: 分区总容量;网络: 网卡带宽
水位计算窗口 取平均值、P99 还是最大值?窗口时长? CPU/内存: 5 分钟平均值;磁盘: 实时值;网络: 1 分钟平均带宽
安全水位阈值 触发告警或自动动作的水位边界 CPU 80%、内存 75%、磁盘 85%、网络 70%
危险水位阈值 必须立即介入的紧急水位 CPU 95%、内存 90%、磁盘 95%、网络 90%
水位趋势预测 基于历史数据预测未来水位 线性回归 + 7 天窗口,预测未来 24 小时水位
常见误区: 很多团队直接使用云厂商提供的“CPU 使用率”作为容量水位,但云厂商的额定上限可能是“实例规格的 100%”,而实际业务可能只分配了 80% 的 vCPU 配额。务必在 Grafana 中显式配置额定上限,否则水位基线会失真。

2.6 容量水位在 Grafana 中的可视化映射

在 Grafana 中,容量水位通常以“百分比仪表盘”或“时间序列 + 阈值线”的形式呈现。下图展示了一个典型的容量水位仪表盘布局,包含四个核心资源的实时水位与基线对比:

Grafana 容量水位仪表盘布局 CPU 水位 72% 安全阈值: 80% 危险阈值: 95% 趋势: ↑ 平稳 内存水位 78% 安全阈值: 75% 危险阈值: 90% 趋势: ↑ 缓慢上升 磁盘水位 92% 安全阈值: 85% 危险阈值: 95% 趋势: ↑ 快速上升 网络水位 60% 安全阈值: 70% 危险阈值: 90% 趋势: → 稳定 容量水位时间序列(过去 6 小时) CPU 内存 磁盘 危险阈值 安全阈值

2.7 容量水位在 GameDay 中的典型应用

在 GameDay 演练中,容量水位是“压力注入 → 观测 → 决策”闭环的核心数据源。典型流程如下:

  1. 基线记录: 演练前记录各资源的安全水位基线(如 CPU 40%、内存 50%)。
  2. 压力注入: 通过混沌工程工具(如 Chaos Mesh、Litmus)注入 CPU 压力、内存泄漏或网络延迟。
  3. 水位观测: 在 Grafana 仪表盘中实时观察水位变化,对比安全阈值和危险阈值。
  4. 自动响应: 水位突破安全阈值时触发告警;突破危险阈值时触发自动扩容或降级。
  5. 复盘分析: 演练结束后,对比水位变化曲线与业务指标,评估容量规划的合理性。
GameDay 演练示例: 假设某电商系统 CPU 安全水位为 80%,危险水位为 95%。演练中注入 200% 的 CPU 压力,观察 Grafana 仪表盘:CPU 水位从 45% 快速攀升至 92%,触发告警;自动扩容策略生效后,水位回落至 65%。复盘发现,扩容策略的触发阈值(90%)偏高,建议调整为 85% 以预留更多缓冲。