4. 性能指标采集:Prometheus与Velero Metrics集成、关键性能指标(KPI)定义
性能调优的前提是可观测。Velero 原生暴露了丰富的 Prometheus Metrics,但默认并未开启。本章将指导你完成集成配置,并定义故障排查中必须关注的三大 KPI:备份时长、恢复时长、缓存命中率。
4.1 Prometheus 与 Velero Metrics 集成
Velero 使用 github.com/prometheus/client_golang 库暴露指标,监听端口默认为 :8085,路径为 /metrics。集成步骤如下:
- 确认 Velero 部署中已启用 Metrics:检查 Velero Deployment 的启动参数是否包含
--metrics-address=:8085。 - 创建 ServiceMonitor(适用于 Prometheus Operator):定义标签选择器匹配 Velero Pod。
- 配置 Prometheus 抓取:若未使用 Operator,则在 Prometheus 配置文件中添加
scrape_configs。
关键配置示例(Prometheus scrape_configs):
scrape_configs:
- job_name: 'velero'
kubernetes_sd_configs:
- role: endpoints
relabel_configs:
- source_labels: [__meta_kubernetes_namespace]
action: keep
regex: velero
- source_labels: [__meta_kubernetes_service_name]
action: keep
regex: velero
metrics_path: /metrics
scheme: http
验证集成:使用
kubectl -n velero port-forward deploy/velero 8085:8085 后,访问 http://localhost:8085/metrics,应看到以 velero_ 开头的指标。
4.2 关键性能指标(KPI)定义
在灾备缓存命中故障场景中,我们聚焦以下三个核心 KPI。它们直接反映系统健康度与调优效果。
| KPI 名称 | 指标来源(Prometheus Metric) | 定义与计算方式 | 故障排查意义 |
|---|---|---|---|
| 备份时长 | velero_backup_duration_seconds(Histogram) |
单次备份从开始到结束的耗时。通常关注 P99 或 P95 分位值。 | 过长表示可能存在网络瓶颈、存储限速或缓存未命中导致的数据重传。 |
| 恢复时长 | velero_restore_duration_seconds(Histogram) |
单次恢复操作的完成时间。同样关注高百分位值。 | 恢复时长突增通常与缓存层(如对象存储 CDN 或本地缓存)命中率下降直接相关。 |
| 缓存命中率 | velero_cache_hit_total / velero_cache_miss_total(Counter) |
命中次数 ÷(命中次数 + 未命中次数)× 100%。 | 核心指标。命中率低于 90% 时,备份/恢复时长会显著劣化,需立即排查缓存策略或存储后端。 |
4.3 缓存命中率计算与告警阈值
缓存命中率是衡量 Velero 本地缓存(--cache-dir)或远端缓存层效率的关键。在 PromQL 中计算如下:
# 缓存命中率(最近 5 分钟)
(
sum(rate(velero_cache_hit_total[5m]))
/
(sum(rate(velero_cache_hit_total[5m])) + sum(rate(velero_cache_miss_total[5m])))
) * 100
告警建议:
- Warning:缓存命中率 < 90%,持续 10 分钟。
- Critical:缓存命中率 < 70%,持续 5 分钟。此时备份/恢复时长通常会翻倍。
4.4 性能指标采集架构
下图展示了 Velero、Prometheus 与 Grafana 之间的指标采集与可视化关系,以及缓存命中率在链路中的位置。
4.5 备份/恢复时长分位值监控
由于备份和恢复时长属于典型的长尾分布,仅看平均值会掩盖性能劣化。建议在 Grafana 中配置如下面板:
- P50(中位数):反映典型负载下的性能基线。
- P95:反映大多数用户体验的上限,超过此值需关注。
- P99:反映极端异常情况,通常与缓存未命中或存储抖动强相关。
Grafana PromQL 查询示例(备份时长 P95):
histogram_quantile(0.95,
sum(rate(velero_backup_duration_seconds_bucket[5m])) by (le)
)
4.6 缓存命中率与备份时长的关联分析
在故障排查中,我们通常将缓存命中率与备份/恢复时长绘制在同一张 Grafana 面板中,观察其负相关关系。下图展示了这种关联分析的逻辑流程。
实战建议:在 Grafana 中创建一个“灾备性能总览”Dashboard,将缓存命中率、备份时长 P95、恢复时长 P95 三个面板并排放置,时间范围统一。当缓存命中率跌破 85% 时,备份时长通常会在 2 分钟内出现明显尖峰,这是缓存命中故障的典型前兆。