首页 > 解决方案 > Prometheus+grafana:如何绘制每个时隙的事件

问题描述

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

在此处输入图像描述

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

我已经配置了一个计数器,我可以使用 prometheus 的增加函数来查找一段时间内的事件增量(比如 1m):

增加(mycounter[1m])

但是生成的图表不像我想要的那样。它给出了更多时间窗口内增加的平均值,而不是每个时间窗口的确切增加。

这可以实现吗?

标签: prometheusgrafana

解决方案


rate由于 Prometheus和increase工作的方式,您永远不会在每个时间窗口中获得确切的增加。

通过将min stepGrafana 中的设置为您喜欢的任何窗口步骤以及查询本身中的范围选择,$__interval一旦$__rate_intervalGrafana 7.2 发布,您将非常接近您想要的。但是考虑一下,一旦你缩小到足够远,如果没有足够的像素来适应所有“窗口”,窗口就会开始增长。此外,最小步长和范围完全相同会导致增加丢失。$__rate_interval解决这个问题。

编辑:

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

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

同样,我建议观看https://www.youtube.com/watch?v=09bR9kJczKM


推荐阅读