2. 容量水位基础概念
容量水位巡检的核心是建立一套可量化的评估体系,用于判断基础设施资源是否处于健康运行区间。本章将系统讲解水位线定义、容量阈值、健康度评分以及常见容量指标,为后续模板生成与巡检脚本开发奠定理论基础。
2.1 水位线定义
水位线(Water Level)是容量管理中用于描述资源使用程度的抽象概念,通常以百分比表示。它反映了当前资源消耗量与总容量的比例关系。在服务目录平台中,水位线是触发巡检、告警和自动扩缩容的关键依据。
核心公式:
水位线(%)=(当前资源使用量 / 资源总容量)× 100%
水位线(%)=(当前资源使用量 / 资源总容量)× 100%
根据资源使用特性,水位线通常划分为以下四个区间:
| 水位区间 | 百分比范围 | 状态描述 | 建议动作 |
|---|---|---|---|
| 低水位 | 0% – 40% | 资源充裕,运行安全 | 无需干预,可考虑资源优化 |
| 正常水位 | 40% – 70% | 资源合理利用,运行稳定 | 常规监控,记录趋势 |
| 高水位 | 70% – 85% | 资源紧张,需关注增长 | 启动预警,评估扩容需求 |
| 危险水位 | 85% – 100% | 资源濒临耗尽,风险极高 | 立即告警,执行扩容或降级 |
实践建议: 水位线区间并非固定不变。对于关键业务服务(如支付、登录),建议将高水位阈值下调至 60%,危险水位下调至 75%,以预留更充足的缓冲容量。
2.2 容量阈值
容量阈值(Capacity Threshold)是预先设定的水位线边界值,用于触发不同级别的运维动作。阈值通常分为预警阈值和告警阈值两级,部分场景还会设置致命阈值。
2.2.1 阈值类型与作用
| 阈值类型 | 触发条件 | 响应动作 | 示例(CPU) |
|---|---|---|---|
| 预警阈值(Warning) | 水位线持续超过 70% 达 5 分钟 | 发送通知,记录事件,启动趋势分析 | CPU 使用率 > 70% |
| 告警阈值(Critical) | 水位线持续超过 85% 达 3 分钟 | 触发告警,自动执行扩容或限流策略 | CPU 使用率 > 85% |
| 致命阈值(Fatal) | 水位线超过 95% 持续 1 分钟 | 紧急降级,强制重启或切换备用节点 | CPU 使用率 > 95% |
注意: 阈值设置需要结合业务特性与资源类型。例如,内存资源通常设置比 CPU 更低的告警阈值,因为内存耗尽会导致进程直接被 OOM Killer 终止,而 CPU 高负载通常只会导致响应变慢。
2.3 健康度评分
健康度评分(Health Score)是对服务目录平台中每个服务实例或节点进行综合评估的量化指标。它基于多个容量指标的水位线,通过加权计算得出一个 0–100 分的评分,用于快速判断整体运行状态。
2.3.1 评分计算模型
健康度评分采用扣分制模型,每个指标根据其水位线所处区间扣除相应分数:
# 健康度评分伪代码示例
def calculate_health_score(metrics):
"""
metrics: 包含 CPU、内存、磁盘、网络 IO 等指标的水位线字典
返回 0–100 的整数评分
"""
base_score = 100
penalty = 0
for metric_name, water_level in metrics.items():
if water_level > 85:
penalty += 30 # 危险水位,扣 30 分
elif water_level > 70:
penalty += 15 # 高水位,扣 15 分
elif water_level > 40:
penalty += 5 # 正常水位,扣 5 分
# 低水位不扣分
health_score = max(0, base_score - penalty)
return health_score
2.3.2 评分等级划分
| 评分区间 | 等级 | 颜色标识 | 运维建议 |
|---|---|---|---|
| 90 – 100 | 健康 | 绿色 | 正常运行,无需干预 |
| 70 – 89 | 亚健康 | 蓝色 | 关注趋势,准备扩容计划 |
| 40 – 69 | 警告 | 橙色 | 启动预警流程,评估扩容 |
| 0 – 39 | 危险 | 红色 | 立即告警,执行应急操作 |
2.4 常见容量指标
在服务目录平台的容量水位巡检中,以下四项指标是最核心的监控对象。每项指标都有其独特的采集方式、单位和水位线评估标准。
2.4.1 CPU
- 指标含义: CPU 使用率,表示 CPU 处于非空闲状态的时间百分比。
- 采集方式: Linux 下通过
/proc/stat或top命令获取;Windows 下通过性能计数器获取。 - 关键子指标: user(用户态)、system(内核态)、iowait(IO 等待)、idle(空闲)。
- 水位线参考: 长期超过 70% 需关注,超过 85% 需告警。
2.4.2 内存
- 指标含义: 内存使用率,表示已用内存占总物理内存的百分比。
- 采集方式: Linux 下通过
/proc/meminfo或free -m获取;注意区分used与available。 - 关键子指标: total(总量)、used(已用)、available(可用)、buff/cache(缓存)。
- 水位线参考: 建议告警阈值设为 80%,因为内存耗尽会导致 OOM。
2.4.3 磁盘
- 指标含义: 磁盘使用率,表示已用磁盘空间占总容量的百分比。
- 采集方式: Linux 下通过
df -h命令获取;需关注Use%列。 - 关键子指标: 空间使用率、inode 使用率、磁盘读写延迟(await)。
- 水位线参考: 空间使用率超过 85% 需告警;inode 使用率超过 80% 需关注。
2.4.4 网络 IO
- 指标含义: 网络接口的吞吐量,包括入向流量和出向流量。
- 采集方式: Linux 下通过
/proc/net/dev或sar -n DEV获取。 - 关键子指标: 带宽使用率(当前流量 / 带宽上限)、丢包率、重传率。
- 水位线参考: 带宽使用率超过 70% 需关注,超过 90% 需告警。
巡检经验: 在服务目录平台中,建议将四项指标的水位线数据统一上报到 Prometheus 或类似时序数据库,然后通过统一的巡检模板进行聚合计算。这样可以避免因指标采集口径不一致导致的误判。
2.5 指标水位线参考汇总
| 指标 | 低水位 | 正常水位 | 高水位(预警) | 危险水位(告警) |
|---|---|---|---|---|
| CPU 使用率 | 0% – 40% | 40% – 70% | 70% – 85% | 85% – 100% |
| 内存使用率 | 0% – 40% | 40% – 65% | 65% – 80% | 80% – 100% |
| 磁盘空间使用率 | 0% – 40% | 40% – 70% | 70% – 85% | 85% – 100% |
| 网络带宽使用率 | 0% – 30% | 30% – 60% | 60% – 80% | 80% – 100% |
以上汇总表可作为服务目录平台容量水位巡检模板的默认配置。在实际部署中,运维团队可根据业务重要性对阈值进行微调,例如将核心数据库的磁盘告警阈值下调至 75%。