Prometheus+grafana:如何绘制每个时隙的事件

Prometheus+grafana: How to graph events per time slot

我一直在努力在 grafana 中获得一个图表,该图表显示每个 x 单位时间的事件数,例如 1 分钟、5 分钟、30 秒等。只是为了说明我在寻找什么,请参见下图:

我想要一个在 X 轴和 Y 轴上显示时隙(例如 5 分钟时隙、5.30-5.35、5.35-5.40 等等......)的图表,显示每个时隙的事件。

我已经配置了一个计数器,我可以使用普罗米修斯的增加功能来查找一段时间内(比如 1 分钟)的事件增量:

增加(我的计数器[1m])

但是生成的图表不是我想要的。它给出了更多随时间增加的平均值 windows,而不是每个时间的精确增加 window。

这能实现吗?

由于 Prometheus rateincrease 的工作方式,您永远不会在每次 windows 中获得准确的增长。

Grafana 7.2 发布后,将 Grafana 中的 min step 设置为您喜欢的任何 window 步骤,并将查询本身中的范围选择设置为 $__interval$__rate_interval ,你非常接近你想要的。但是考虑一下,一旦你缩小得足够远,如果没有足够的像素来容纳所有“windows”,window 就会开始增长。此外,让最小步长和范围完全相同会导致迷路的增加。 $__rate_interval 解决了这个问题。

编辑:

从Grafana到Prometheus的查询包含一个step参数,Prometheus沿着给定的时间范围“逐步”。对于每个步骤,都会评估相应的查询,例如 rate(counter_total[5m])。最小步长是 Grafana 的下限。您可以在其他几个位置定义类似的内容。例如,在您设置抓取间隔的数据源设置中。

最终使用的实际步长值是根据许多其他因素计算得出的。例如可用的像素数。但是您也可以固定所需的总步数,例如 10。这里是 $__interval 的用武之地。它基本上使步数与速率范围同步,并确保您始终拥有尽可能高的分辨率,同时防止不足和过度获取。缺点:图表可能变得非常尖锐和嘈杂,您可能更喜欢 5/10/15m 速率的外观。此外,如果您的速率范围与步骤完全相同,您可能会失去数据的增加。但同样适用于固定的速率范围和足够大的时间范围。 $__rate_interval 通过始终将抓取间隔添加到范围选择器来解决此问题。

再次推荐观看https://www.youtube.com/watch?v=09bR9kJczKM