4. 容量水位指标定义:CPU使用率、内存使用率、磁盘IO、网络吞吐量、连接数、请求延迟P99
在多集群架构下,服务目录平台需要持续采集各集群与服务的容量水位数据,以支撑巡检、告警与弹性伸缩决策。容量水位指标是衡量系统负载与健康状态的核心量化维度,本章明确定义六项关键指标:CPU使用率、内存使用率、磁盘IO、网络吞吐量、连接数、请求延迟P99。每项指标均从采集粒度、聚合方式、阈值参考与巡检用途四个角度进行标准化定义。
4.1 指标定义总览
下表汇总了六项容量水位指标的基础定义、采集单位与典型巡检周期,确保跨集群数据口径一致。
| 指标名称 | 采集单位 | 采集粒度 | 聚合方式 | 典型巡检周期 |
|---|---|---|---|---|
| CPU使用率 | 百分比(%) | 15s / 30s | 节点/容器 均值 | 1min |
| 内存使用率 | 百分比(%) | 30s | 节点/容器 均值 | 1min |
| 磁盘IO | IOPS / MBps | 60s | 设备级 读写速率 | 5min |
| 网络吞吐量 | Mbps / Kpps | 30s | 网卡级 入/出方向 | 1min |
| 连接数 | 计数(Count) | 10s | 进程/端口 活跃连接 | 30s |
| 请求延迟P99 | 毫秒(ms) | 10s | 服务级 百分位统计 | 30s |
巡检对齐提示: 在跨集群数据传输场景中,建议将采集粒度统一为30s基准周期,便于多集群时间序列对齐。P99延迟与连接数属于高灵敏度指标,应使用更短的采集窗口(10s)以捕捉毛刺。
4.2 指标详细定义与巡检阈值
4.2.1 CPU使用率
CPU使用率反映计算资源占用比例。在容器化场景下,应区分节点CPU使用率与容器CPU使用率。巡检关注点:
- 节点级: 超过80%持续5分钟触发警告,超过90%触发严重告警。
- 容器级: 超过Request限额的150%或Limit的80%视为异常。
- 数据传输影响: CPU飙高可能导致数据采集Agent丢点、序列化延迟增加。
4.2.2 内存使用率
内存使用率包括物理内存与Swap交换分区。容器场景需额外关注RSS(驻留集)与Working Set。
- 节点级: 内存使用率超过85%或Swap使用率超过10%触发巡检告警。
- 容器级: 内存使用超过Limit的90%视为高水位。
- 数据传输影响: 内存不足会触发OOM Kill,导致数据传输中断或数据丢失。
4.2.3 磁盘IO
磁盘IO指标包含IOPS(每秒读写次数)与吞吐量(MBps)。巡检应区分读写方向。
- IOPS阈值: 对于SSD设备,单盘IOPS超过80%最大规格(如8000 IOPS)触发告警。
- 吞吐量阈值: 持续写吞吐超过磁盘带宽的70%视为高负载。
- 数据传输影响: 磁盘IO瓶颈会导致数据落盘延迟、WAL日志积压、传输链路阻塞。
4.2.4 网络吞吐量
网络吞吐量反映网卡带宽占用情况,通常按入方向(Inbound)与出方向(Outbound)分别采集。
- 带宽阈值: 持续超过网卡带宽的60%触发关注,超过80%触发告警。
- 小包场景: 当PPS(每秒包数)超过网卡PPS上限的50%时,即使带宽未满也可能丢包。
- 数据传输影响: 网络吞吐量接近上限会导致TCP重传率上升、传输延迟抖动。
4.2.5 连接数
连接数指标包括TCP活跃连接数、ESTABLISHED状态连接数与文件描述符使用量。
- 进程级阈值: 活跃连接数超过进程最大连接数的70%触发告警。
- 节点级阈值: 文件描述符使用率超过80%视为高水位。
- 数据传输影响: 连接数过高会耗尽端口资源或文件描述符,导致新连接建立失败、数据传输中断。
4.2.6 请求延迟P99
P99延迟表示99%的请求在小于等于该值的时间内完成,是衡量服务质量的关键指标。
- 基准定义: 以1分钟窗口内所有请求的P99百分位值为准。
- 阈值参考: 基础服务P99应小于50ms;核心数据传输服务P99应小于200ms;超过500ms视为严重劣化。
- 数据传输影响: P99延迟突增通常预示网络拥塞、CPU争抢或后端服务过载,直接影响数据推送的实时性。
避坑提醒: 在多集群巡检数据传输中,P99延迟指标必须按服务维度打上集群标签,避免将不同集群的延迟数据混洗后计算全局P99,否则会掩盖单集群的性能劣化。
4.3 容量水位指标采集架构
下图展示了从多集群节点到服务目录平台的容量水位指标采集与传输架构,涵盖Agent部署、指标聚合与数据上送三个关键环节。
4.4 指标数据格式与传输协议
为确保跨集群数据传输的兼容性与解析效率,容量水位指标采用统一的Protobuf序列化格式,并通过gRPC流式传输。以下为指标数据结构的核心定义:
syntax = "proto3";
package capacity.watermark;
message WatermarkMetric {
string cluster_id = 1; // 集群唯一标识
string node_id = 2; // 节点或容器ID
string metric_name = 3; // 指标名称:cpu_usage / memory_usage / disk_iops / net_throughput / conn_count / p99_latency
double value = 4; // 当前值
map<string, string> labels = 5; // 附加标签:type=node/container, direction=in/out
int64 timestamp = 6; // Unix毫秒时间戳
double threshold_warn = 7; // 警告阈值
double threshold_critical = 8; // 严重阈值
}
message WatermarkBatch {
repeated WatermarkMetric metrics = 1;
int64 batch_seq = 2; // 批次序号,用于去重与排序
}
关键设计说明: 每个指标携带独立的警告阈值与严重阈值,使得服务目录平台可以在不依赖外部配置中心的情况下,直接基于数据包进行水位判定。batch_seq字段用于接收端去重与乱序重排,保障数据传输的最终一致性。
4.5 巡检判定逻辑
服务目录平台接收到容量水位指标后,按以下步骤执行巡检判定:
- 数据有效性校验: 检查timestamp是否在允许时间窗口内(默认±30s),丢弃过期或未来数据。
- 阈值匹配: 将value与metric自带的threshold_warn、threshold_critical进行比较。
- 持续条件判断: 连续3个巡检周期均超过阈值,才触发告警,避免抖动误报。
- 跨集群聚合: 按cluster_id分组,生成集群级水位概览视图。
- 告警输出: 将超限指标写入告警事件表,并通过Webhook推送至运维通知渠道。
通过上述六项容量水位指标的标准化定义、采集架构与巡检逻辑,服务目录平台能够在多集群环境下实现统一、准确、实时的容量水位感知,为后续的弹性伸缩与故障自愈提供可靠的数据基础。