长时间的普罗米修斯利率查询

时间:2020-07-05 13:56:51

标签: prometheus

长时间使用rate函数(例如7d)时,出现错误"query processing would load too many samples into memory in query execution"

我的查询是

histogram_quantile(0.90, rate(http_request_in_seconds_bucket[7d]))

1 个答案:

答案 0 :(得分:0)

发生此错误是因为Prometheus具有a limit of samples可以在内存中处理。

我通过added on Prometheus 2.7子查询解决了这个问题。 这样,您可以分别查询较小的时间间隔,然后将它们汇总在一起。

例如,我将查询更改为多个24小时子查询,然后将其平均在一起

histogram_quantile(0.90, avg_over_time(rate(http_request_in_seconds_bucket[24h])[7d:12h]))

还有其他解决方案:

  1. 通过更改标志query.max-samples(不推荐)来增加它可以处理的样本数量
  2. 使用Recording Rules-建议在子查询中使用,因为它可以减少Prometheus服务器上的负载,但需要花费更多的精力进行设置。