在过去的几天里,我一直在研究普罗米修斯和格拉法纳,我对它的工作方式感到有些困难。
我目前拥有的是一个随着时间的推移而增加的计数器(即计数器只能向上运行)。我试图做一个线性图来显示这个值是如何在指定的时间范围内增加的。
为此,我使用以下查询:
sum(increase(my_metric[$__range]))我还将类型设置为在查询选项中显示Range和Instant。
我不明白的是,如果我设置了一个很大的范围(即,从我使用这个度量的那一刻起,在这里是4个月),那么图在我看来是很好的:

然而,如果我设定了一个较短的时间范围(即24小时),这条线就会波动:

所以我的问题是,我是否有正确的方法来做我想做的事情?
此外,为什么当计数器只上升时,短时程会波动?
我的假设是,increase()函数做了一些估计,从而得到了这条线。但在这种情况下,它是否意味着“即时”值(绿色点),也就是24意味着在这段时间内计数器增加了24?
发布于 2022-12-01 20:36:02
计数器101
为什么当计数器只上升时,短时程就会波动?
柜台确实只会上升。但这本身并没有什么用处--如果一个值只会上升,你为什么要关心确切的价值呢?今天是1,明天是42,一周后就是100500。我们真正想知道的是,随着时间的推移,计数器的增长速度有多快(如果它在第一天就有价值42,那么为什么它在一周后就会出现在100500而不是294附近呢?)
如果您真的关心应该使用的量规的实际值,那么这个值也可能下降。
增加()
增加()函数在PromQL中完成了您想对计数器所做的事情--它在一个时间框架内获取度量的历史记录,并计算值增长的速度。
一个计数器能在第一分钟增加10,在下一分钟增加3吗?当然,这就是为什么increase图会上下波动(“波动”)。当你在第二张图上设置一个小范围间隔时,它是可见的,当你在第一张图上设置一个大范围间隔时,它不是(在08/14,08/20,.,11/30的4个月期间,my_metric增加了多少?总是越来越大,因为范围很大)。
详细的计算方法和细微差别(比如“为什么增加可能返回浮点数”)已经被描述了,f.e。见这个职位的答案。
集合体
所以我的问题是,我是否有正确的方法来做我想做的事情?
由于您不使用标签,所以查询可能会简化:
sum(increase(my_metric[$__range])) -> increase(my_metric[$__range]).
sum作为聚合算子尤其适用于without和by可选子句。
F.e.如果有几台机器报告my_metric,标记为instance标签,并且希望在查询中将其聚合掉(也就是说,您不关心每个实例的结果,而是希望将它们作为一个整体),那么您可能需要使用:
sum without (instance) (increase(my_metric[$__range]))
https://stackoverflow.com/questions/74643772
复制相似问题