PromQL容量水位监控与阈值校验工程 - 第1节

1.1 什么是容量水位

容量水位(Capacity Watermark)是衡量系统资源使用程度与剩余可用能力的量化指标,通常以百分比或值表示。它直接反映系统在特定时间点上的负载压力与资源余量。

核心定义:容量水位 = 当前资源使用量 / 总可用资源量 × 100%

常见的容量水位指标包括:

资源维度 典型指标 水位计算方式
CPU CPU 使用率 user + system + iowait 时间占比
内存 内存使用率 已用内存 / 总内存
磁盘 磁盘空间使用率 已用空间 / 总空间
网络 带宽使用率 当前吞吐量 / 链路带宽
应用 连接数水位 活跃连接数 / 最大连接数

容量水位不是静态阈值,而是随业务流量、部署架构、硬件规格动态变化的相对值。同一台服务器在白天业务高峰与夜间低谷时的水位可能相差数倍,因此需要结合时间序列进行持续观测。

容量水位概念模型 总可用容量(Total Capacity) 已使用容量(Used) 剩余容量(Available) 水位 = 已使用 / 总容量 = 420/680 ≈ 61.8% 水位越高,系统弹性越小;水位超过安全阈值时,突发流量可能导致资源耗尽。 容量水位监控的目标是在水位到达危险区之前提前预警,为扩容争取时间。

1.2 为什么需要监控容量水位

容量水位监控是保障系统持续可用、避免服务降级或中断的核心手段。其必要性体现在以下四个维度:

  1. 预防资源耗尽:磁盘写满、内存 OOM、连接池枯竭等故障通常不是瞬间发生,而是水位持续上升后的必然结果。提前发现水位异常,可以在故障发生前完成干预。
  2. 指导容量规划:通过历史水位趋势分析,可以预测未来资源需求,为扩容、缩容、架构升级提供数据依据,避免过度投资或资源不足。
  3. 保障 SLA 目标:高水位往往伴随性能劣化——CPU 飙高导致请求排队、内存不足触发频繁 GC、磁盘 I/O 饱和增加延迟。监控水位是维持响应时间与可用率达标的前提。
  4. 支撑自动化运维:弹性伸缩、自动故障转移、限流降级等自动化策略均依赖准确的水位数据作为触发条件。没有水位监控,自动化决策就是盲目的。
经验法则:生产环境中,建议对每项资源设置三级水位——安全水位(<70%)、警戒水位(70%~85%)、危险水位(>85%),并分别对应不同的响应策略。

1.3 容量水位与系统稳定性的关系

容量水位与系统稳定性之间存在明确的非线性关联。低水位时系统运行平稳,随着水位升高,稳定性呈阶梯式下降:

水位区间 稳定性状态 典型表现
0% ~ 60% 安全区 响应时间正常,无排队,故障恢复迅速
60% ~ 80% 过渡区 偶发延迟抖动,部分请求开始排队
80% ~ 90% 风险区 性能明显劣化,错误率上升,恢复时间延长
90% ~ 100% 危险区 服务不可用、OOM、连接拒绝、级联故障

这种关系的本质在于:资源耗尽并非线性过程。以 CPU 为例,当使用率超过 80% 后,任务调度延迟急剧增加,请求排队时间呈指数级上升;内存使用率接近 100% 时,操作系统开始频繁 swap,磁盘 I/O 成为新瓶颈,引发连锁反应。

关键认知:容量水位是系统稳定性的先行指标,而非滞后指标。在错误率、延迟等用户体验指标恶化之前,水位往往已经进入风险区。因此,水位监控是 SRE 实现“先于用户发现问题”这一目标的最有效工具。
水位与稳定性关系曲线 容量水位 (%) 稳定性 安全区 过渡区 风险区 危险区 60% 80% 90% 水位超过 80% 后,稳定性下降速度显著加快;超过 90% 后系统进入不可控状态。