4. 应用画像方法:通过 Prometheus/Grafana 监控采集应用实际存储使用趋势
应用画像是容量规划的基石。脱离实际负载的估算往往导致过度配置或资源不足。本节将讲解如何利用 Prometheus 与 Grafana 构建应用存储画像,采集容量增长曲线与 IO 模式,为后续集群资源估算提供精确输入。
4.1 应用画像的核心维度
一个完整的应用存储画像需要覆盖以下四个维度,缺一不可:
| 维度 | 关键指标 | 采集来源 | 规划用途 |
|---|---|---|---|
| 容量增长 | PVC 使用率、总容量、已用容量 | kubelet / csi-exporter | 确定扩容周期与预留水位 |
| IOPS | 读写 IOPS、平均队列深度 | node-exporter / csi-exporter | 选择存储后端类型(SSD/HDD) |
| 吞吐量 | 读写带宽(MB/s) | node-exporter / csi-exporter | 规划网络带宽与存储节点吞吐 |
| IO 时延 | 平均读写延迟(ms)、P99 延迟 | csi-exporter / 应用 sidecar | 判断是否需要本地盘或缓存加速 |
专家建议: 不要只采集 1 小时的数据。容量增长曲线至少需要 7 天的连续数据,IO 模式则需要覆盖业务高峰与低峰时段(通常 24 小时以上),才能反映真实特征。
4.2 关键 Prometheus 指标与采集配置
以下是指标采集的核心 PromQL 语句与配置要点:
4.2.1 容量增长曲线
# PVC 已用容量百分比(按 PVC 维度)
kubelet_volume_stats_used_bytes / kubelet_volume_stats_capacity_bytes * 100
# 按命名空间聚合总容量增长趋势
sum by (namespace) (
kubelet_volume_stats_used_bytes
) / sum by (namespace) (
kubelet_volume_stats_capacity_bytes
) * 100
# 预测 30 天后容量(使用线性回归预测函数)
predict_linear(kubelet_volume_stats_used_bytes[7d], 30*24*3600)
4.2.2 IO 模式指标
# 磁盘读写 IOPS(按设备聚合)
rate(node_disk_reads_completed_total[5m])
rate(node_disk_writes_completed_total[5m])
# 磁盘读写吞吐量(MB/s)
rate(node_disk_read_bytes_total[5m]) / 1024 / 1024
rate(node_disk_written_bytes_total[5m]) / 1024 / 1024
# 磁盘平均 IO 延迟(ms)
rate(node_disk_read_time_seconds_total[5m]) / rate(node_disk_reads_completed_total[5m]) * 1000
rate(node_disk_write_time_seconds_total[5m]) / rate(node_disk_writes_completed_total[5m]) * 1000
注意: 如果使用 CSI 驱动(如 Rook/Ceph、Longhorn),建议启用 CSI 侧车容器的指标暴露端口(通常为 8080 或 9090),获取更精确的卷级 IO 指标,而非节点级聚合数据。
4.3 应用画像流程:从采集到可视化
下图展示了从 Prometheus 指标采集到 Grafana 仪表盘输出的完整画像流程:
4.4 Grafana 仪表盘设计要点
一个实用的存储画像仪表盘应包含以下面板布局:
- 容量总览面板:显示所有 PVC 的已用容量百分比热力图,按命名空间分组,颜色从绿(<60%)到红(>85%)渐变。
- 增长趋势面板:使用时间序列折线图展示 Top 10 增长最快的 PVC,叠加
predict_linear预测线。 - IOPS 分布面板:柱状图展示各 PVC 的读写 IOPS 峰值与平均值,便于识别高 IO 应用。
- 延迟热力图:展示 24 小时内各 PVC 的 P99 延迟变化,帮助发现间歇性性能瓶颈。
- 存储类型分布:饼图或表格展示当前集群中 SSD、HDD、本地盘的使用比例。
实战案例: 某日志采集应用在 Grafana 仪表盘中显示其 PVC 容量以每天 3.2% 的速度增长,预测 22 天后达到 85% 水位线。同时 IOPS 曲线显示写入峰值集中在每小时的第 5-10 分钟(日志轮转期)。基于此画像,团队将 PVC 初始大小从 100Gi 调整为 200Gi,并配置了 HPA 风格的存储自动扩容策略。
4.5 应用画像输出模板
完成采集与可视化后,建议为每个应用生成标准化的画像报告,格式如下:
| 应用名称 | 命名空间 | 当前容量 | 日增长率 | 预测满容量日期 | 峰值 IOPS | 峰值吞吐 | P99 延迟 | 建议存储类型 |
|---|---|---|---|---|---|---|---|---|
| nginx-log | prod | 120Gi / 200Gi | 2.1% | 2025-06-15 | 850 | 45 MB/s | 2.3 ms | SSD |
| mysql-db | prod | 450Gi / 500Gi | 0.8% | 2025-08-20 | 3200 | 210 MB/s | 1.1 ms | NVMe |
| media-cache | staging | 30Gi / 100Gi | 0.3% | 2026-01-10 | 120 | 8 MB/s | 5.6 ms | HDD |