我一直在努力地在grafana中创建一个图表,该图表显示每x单位时间的事件数,例如1min,5min,30secs等。只是为了说明我在寻找什么,请参见下图:>
我想有一个在X轴上显示时隙(例如5分钟时隙,5.30-5.35、5.35-5.40等)的图形,而Y轴显示每个时隙的事件。
我已经配置了一个计数器,我可以使用普罗米修斯的增加功能来查找一段时间(例如1m)内事件的变化量,
增加(mycounter [1m])
但是生成的图形与我想要的不一样。它提供了更多随时间窗增加的平均值,而不是每个时间窗的确切增加。
这可以实现吗?
答案 0 :(得分:1)
由于普罗米修斯rate
和increase
的工作方式,您永远不会在每个时间窗口中得到确切的增加。
通过在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
通过始终将刮擦间隔添加到范围选择器来解决此问题。