2. 容量水位基础概念

容量水位巡检的核心是建立一套可量化的评估体系,用于判断基础设施资源是否处于健康运行区间。本章将系统讲解水位线定义、容量阈值、健康度评分以及常见容量指标,为后续模板生成与巡检脚本开发奠定理论基础。

2.1 水位线定义

水位线(Water Level)是容量管理中用于描述资源使用程度的抽象概念,通常以百分比表示。它反映了当前资源消耗量与总容量的比例关系。在服务目录平台中,水位线是触发巡检、告警和自动扩缩容的关键依据。

核心公式:
水位线(%)=(当前资源使用量 / 资源总容量)× 100%

根据资源使用特性,水位线通常划分为以下四个区间:

水位区间 百分比范围 状态描述 建议动作
低水位 0% – 40% 资源充裕,运行安全 无需干预,可考虑资源优化
正常水位 40% – 70% 资源合理利用,运行稳定 常规监控,记录趋势
高水位 70% – 85% 资源紧张,需关注增长 启动预警,评估扩容需求
危险水位 85% – 100% 资源濒临耗尽,风险极高 立即告警,执行扩容或降级
实践建议: 水位线区间并非固定不变。对于关键业务服务(如支付、登录),建议将高水位阈值下调至 60%,危险水位下调至 75%,以预留更充足的缓冲容量。
水位线区间与状态对应关系 低水位 0% – 40% 正常水位 40% – 70% 高水位 70% – 85% 危险水位 85% – 100% 0% 40% 70% 85% 100% 低水位 资源充裕,运行安全 正常水位 资源合理利用,运行稳定 高水位 资源紧张,需关注增长 危险水位 资源濒临耗尽,风险极高

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 危险 红色 立即告警,执行应急操作
健康度评分计算流程 容量指标采集 水位线区间判断 加权扣分计算 输出健康度评分 扣分规则 低水位:扣 0 分 正常水位:扣 5 分 高水位:扣 15 分 危险水位:扣 30 分

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%。