Prometheus rate() 函数用于每秒递增 1 的计数器
Prometheus rate() function for a counter incrementing by 1 per second
我设置了一个简单的 statsd 到 Prometheus 集成,以了解 rate() 函数的工作原理。我有以下脚本,它每秒向 statsd 发布一个 1
的计数器值。
import os
import time
while True:
os.system('echo "sample2_counter.myservice:1|c" | nc -w 1 -u 127.0.0.1 8125')
time.sleep(1)
在 PromLens 上,我正在尝试可视化图表。根据我的理解,rate() 函数捕获特定计数器的每秒平均增长率。
我在 PromLens 上得到以下图表:
我无法理解这张图,为什么 rate() 计算为 ~0.5。我的脚本每秒将计数器递增 1。在这种情况下,平均增长率不应该接近 1 吗?我在这里错过了什么?
找到费率减半背后的问题; netcat 命令本身大约需要一秒钟将结果发布到 statsd,我们还有一秒钟的睡眠时间。所以总的来说,脚本每 2 秒递增一次,因此 rate() 将其显示为 0.5.
我设置了一个简单的 statsd 到 Prometheus 集成,以了解 rate() 函数的工作原理。我有以下脚本,它每秒向 statsd 发布一个 1
的计数器值。
import os
import time
while True:
os.system('echo "sample2_counter.myservice:1|c" | nc -w 1 -u 127.0.0.1 8125')
time.sleep(1)
在 PromLens 上,我正在尝试可视化图表。根据我的理解,rate() 函数捕获特定计数器的每秒平均增长率。 我在 PromLens 上得到以下图表:
我无法理解这张图,为什么 rate() 计算为 ~0.5。我的脚本每秒将计数器递增 1。在这种情况下,平均增长率不应该接近 1 吗?我在这里错过了什么?
找到费率减半背后的问题; netcat 命令本身大约需要一秒钟将结果发布到 statsd,我们还有一秒钟的睡眠时间。所以总的来说,脚本每 2 秒递增一次,因此 rate() 将其显示为 0.5.