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

时间:2020-09-03 05:16:06

标签: prometheus grafana

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

enter image description here

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

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

增加(mycounter [1m])

但是生成的图形与我想要的不一样。它提供了更多随时间窗增加的平均值,而不是每个时间窗的确切增加。

这可以实现吗?

1 个答案:

答案 0 :(得分:1)

由于普罗米修斯rateincrease的工作方式,您永远不会在每个时间窗口中得到确切的增加。

通过在Grafana中将min step设置为所需的任何窗口步长,并在释放Grafana 7.2后将查询本身的范围选择设置为$__interval$__rate_interval,您将非常接近你想要什么。但是请考虑一下,如果没有足够的像素来容纳所有“窗口”,则将窗口缩小到足够远时,窗口将开始增大。另外,最小步长和范围完全相同可以导致丢失。 $__rate_interval可以解决此问题。

编辑:

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

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

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