You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Grafana中基于Prometheus指标计算滑动窗口内的可用率/SLA百分比

解决Grafana Singlestat面板计算测试可用率的问题

我来帮你搞定这个可用率计算的需求!你之前的思路是对的,但问题出在没有用合适的PromQL函数把时间序列数据聚合为单一的百分比数值。下面是具体的解决方案:

核心逻辑

我们需要计算过去5天内,环境处于健康状态的时长占总时长的比例:

  • 健康状态:测试失败数为0 → 对应你写的1 - clamp_max(sum(e2e_tests_failure_count{...}), 1)结果为1
  • 不健康状态:只要有测试失败 → 结果为0
  • 最终百分比 =(健康总秒数 / 5天总秒数)× 100

正确的PromQL查询

(sum_over_time((1 - clamp_max(sum(e2e_tests_failure_count{kubernetes_name=~"test-framework-1|test-framework-2|test-framework-3",kubernetes_namespace="platform-edge"}), 1))[5d:1s]) / (5*24*3600)) * 100

逐部分解释:

  1. sum(e2e_tests_failure_count{...}):统计指定测试框架的总失败次数
  2. clamp_max(..., 1):把失败次数“归一化”为0或1——只要有失败就返回1,无失败返回0
  3. 1 - ...:反转状态,1代表健康,0代表不健康
  4. [5d:1s]:以1秒为步长,获取过去5天内的所有状态样本(确保每个时间点都被统计)
  5. sum_over_time(...):累加所有健康状态的秒数(因为健康时每个样本值为1,累加结果就是健康总时长)
  6. /(5*24*3600):除以5天的总秒数(5×24×3600=432000秒)
  7. *100:转换为百分比格式

Grafana面板设置

  1. 面板类型选择Singlestat
  2. 在「Options」标签页:
    • 单位选择「Percent (%)」
    • 可以设置阈值(比如99%以上显示绿色,95%-99%黄色,低于95%红色)
  3. 确保查询的时间范围设置为「Last 5d」(或者和查询中的5d保持一致)

为什么你之前的查询报错?

你之前的(1 - clamp_max(...))[5d]只是获取了过去5天的时间序列数据,但Singlestat面板需要一个单一数值,而不是一组时间点的数据。sum_over_time函数正好帮我们把时间序列聚合为一个总时长数值,再通过计算得到百分比。

内容的提问来源于stack exchange,提问作者feob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:56:43