【问题标题】:Latency SLO calculation of requests请求的延迟 SLO 计算
【发布时间】:2021-02-17 22:11:46
【问题描述】:

我需要通过直方图时间序列计算和绘制 prometheus 上的延迟 SLO 图,但我未能在 grafana 中显示直方图。 一个示例指标是 nginx 的请求时间。

假设我有一个这样的直方图桶,

nginx_request_time_bucket(le=1) 1,
nginx_request_time_bucket(le=10) 2,
nginx_request_time_bucket(le=60) 2,
nginx_request_time_bucket(le=+inf) 5

我使用下面的表达式来验证延迟 SLO。此表达式返回 10 秒内请求的百分比:

sum(rate(nginx_request_time_bucket{le="10"}[$__range])) / sum(rate(nginx_request_time_count[$__range]))

现在我怎样才能找到 10 到 60 秒内的请求百分比?如何计算?

下面的表述正确吗?

(
  sum(rate(nginx_request_time_bucket{le="10"}[$__range]))
+
  sum(rate(nginx_request_time_bucket{le="60"}[$__range]))
) / 2 / sum(rate(nginx_request_time_count[$__range])) 

非常感谢这里的任何帮助!

【问题讨论】:

    标签: histogram prometheus grafana promql


    【解决方案1】:

    所有{le="10"} 请求也包含在{le="60"} 中(以及所有更大的存储桶中),因此要知道它们之间的请求数量,您只需减去费率,如下所示:

    (
      sum(rate(nginx_request_time_bucket{le="60"}[$__range]))
       - 
      sum(rate(nginx_request_time_bucket{le="10"}[$__range]))
    )
    / sum(rate(nginx_request_time_count[$__range]))
    

    应该可以。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-01-08
    • 1970-01-01
    • 2017-08-12
    • 2021-01-08
    • 2013-11-17
    • 2019-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多