【发布时间】:2019-06-26 21:50:17
【问题描述】:
我已经仔细阅读了Prometheus documentation,但对我来说还是有点不清楚,所以我在这里确认我的理解。
(请注意,为了可能是最简单的例子我已经使用一秒作为抓取间隔、时间范围 - 即使在实践中不可能)
尽管我们每秒抓取一个计数器,但计数器的值现在是 30。为此,我们有以下时间序列:
second counter_value increase calculated by hand(call it ICH from now)
1 1 1
2 3 2
3 6 3
4 7 1
5 10 3
6 14 4
7 17 3
8 21 4
9 25 4
10 30 5
我们想在这个数据集上运行一些查询。
1.rate()
官方文件称:
"rate(v range-vector) : 计算范围向量中时间序列每秒平均增长率。"
通俗地说,这意味着我们将获得每秒的增量,而给定秒的值将是给定范围内的平均增量?
我的意思是:
rate(counter[1s]): 将匹配 ICH,因为将仅从一个值计算平均值。
rate(counter[2s]): 将在 2 秒内从增量中获取平均值,并将其分配给秒
所以在前 2 秒内,我们总共增加了 3,这意味着平均值为 1.5/秒。
最终结果:
second result
1 1,5
2 1,5
3 2
4 2
5 3,5
6 3,5
7 3,5
8 3,5
9 4,5
10 4,5
rate(counter[5s]):将在 5 秒内从增量中获取平均值,并将其分配给秒
与 [2s] 相同,但我们从 5 秒的总增量中计算平均值。
最终结果:
second result
1 2
2 2
3 2
4 2
5 2
6 4
7 4
8 4
9 4
10 4
所以时间范围越大,我们得到的结果就越平滑。这些增加的总和将与实际计数器匹配。
2.increase()
官方文件称:
“increase(v range-vector):计算范围向量中时间序列的增量。”
对我来说,这意味着它不会在秒数之间分配平均值,而是显示给定范围的单个增量(外推)。
increase(counter[1s]): 在我看来,这将与 ICH 和 1s 的速率匹配,因为总范围和速率的基本粒度匹配。
increase(counter[2s]): 前 2 秒给了我们总共 3 的增量,所以
2.seconds 会得到 3 的值,以此类推...
second result
1 3*
2 3
3 4*
4 4
5 7*
6 7
7 7*
8 7
9 9*
10 9
*在我看来,这些值是指每秒覆盖的外推值。
我理解得很好还是远非如此?
【问题讨论】:
-
您对
rate()和increase()的理解比PromQL 更接近MetricsQL。
标签: prometheus