是否有可能获得最后 t 分钟的 histogram_quantile 的平均值?

Is it possible to get the average of histogram_quantile of the last t minutes?

我要查找的是最后 t 分钟内 p99 延迟的平均值。

我试过这个查询,但它 return 出现错误“范围只允许用于向量选择器”

avg_over_time(histogram_quantile(0.99, sum(rate(latency_buckets{service="foo"}[5m])) by (le))[5m])

据我了解,histogram_quantile 所做的是 return 一个即时值(比方说 p99),并且无法在指定的时间间隔内获得一系列 p99 值。如果有,有没有什么功能可以达到同样的目的?

可以使用 subquery 语法:

avg_over_time(instant_query[interval:resolution])

您的查询示例(平均超过 1 小时):

avg_over_time(
  histogram_quantile( # the instant query
    0.99,
    sum(
      rate(latency_buckets{service="foo"}[5m])
    ) by (le)
  )[1h:] # subquery [ interval : resolution (by default == scrape interval)]
)