无法使用Promethues自定义计数器查询准确的详细信息

时间:2019-11-29 09:19:38

标签: prometheus

我正在尝试查询自定义计数器Promethues指标,但似乎找不到正确的查询。我想查询最后一分钟的发生次数。为此,我尝试了sum(increase(my_counter[1m]))sum(rate(my_counter[1m]))。似乎都没有给出准确的值。我该如何查询呢?

1 个答案:

答案 0 :(得分:0)

您不会从普罗米修斯那里获得准确的值(就您所期望的而言)。

当前的问题是PromQL的increase()rate()使用外推法而不是实际可用数据。有关详情,请参见this Prometheus issue。有许多解决方法,但都不是理想的。 (例如,您可以在所需的时间间隔 plus scrape_interval中进行增加,然后通过除以该时间间隔的长度再乘以所需的时间间隔来进行调整。)

更深层的问题是混叠,对此您无能为力。基本上,因为Prometheus每隔x秒/分钟对您的计数器进行一次采样,所以您实际上无法确切知道在任何时间范围内的增加量,除了准确地收集这些样本的瞬间之间。 (而且,当您向Prometheus索要rate(x[1m])时,您实际上是在要求将 now now 之间精确地减去1分钟,这可能会不一致以及收集到的所有样本。)更不用说由于网络延迟,负载等原因造成的抖动。

尽管这不是(IMHO)PromQL对rate()increase()的实现的借口,并且您应该能够获得比Prometheus给您的更好的数字。 (再次,请参见上面链接的Prometheus问题。)