[英]Understanding of rate() function of PromQL
我瀏覽了 PromQL 文檔,發現 rate 有點令人困惑。 然后我嘗試了來自 Prometheus 查詢儀表板的一個查詢,發現下面給出的結果
Time Count increase rate(count[1m])
15s 4381 0 0
30s 4381 0 0
45s 4381 0 0
1m 4381 0 0
15s 4381 0 0
30s 4402 21 0.700023
45s 4402 0 0.700023
2m 4423 21 0.7
15s 4423 0 0.7
30s 4440 17 0.56666666
45s 4440 0 0.56666666
3m 4456 16 0.53333333
我從儀表板獲得的最后一列值,但我無法理解這是如何計算的。
分辨率 - 15s
scrape_interval:30s
Prometheus 通過以下方式計算時間戳t
處的rate(count[d])
:
count
名稱在時間范圍內(td... t]
。請注意, td
時間戳不包含在范圍內,而t
時間戳包含在范圍內。例如,在計算rate(count[1m])
時rate(count[1m])
在時間戳t=2m
時選擇了以下原始樣本: 4423 @ 2m, 4402 @ 1m45s, 4402 @ 1m30s, 4381 @ 1m15s
。請注意, 4381 @ 1m
樣本不包括在計算中。count
。 Prometheus 可以檢測並刪除選定時間范圍內的時間序列重置為零,但為了清楚起見,我們暫時跳過這一點。 在上面的例子中,它計算4423 @ 2m - 4381 @ 1m15s = 42
。d
(以秒為單位),名稱為count
。 在上面的例子中,它計算42 / 1m = 42 / 60s = 0.7
。 rate(count[1m]) @ 2m
- 0.700023
的實際結果與計算結果不同 - 0.7
- 因為外推,如果第一個和/或最后一個原始樣本的時間戳,則可以將其應用於在步驟 2 計算的結果距離選定的時間范圍邊界太遠。 在本期中查看有關外推的更多詳細信息。
另請注意,在計算rate()
和increase()
時,Prometheus 錯過了時間范圍[1m... 1m15s]
上可能的計數器增加。 在此處和此處查看有關此問題的更多詳細信息。
我找到了這個:
rate = Count_{now} - Count_{now-30s} / 30s
Time Count increase rate(count[1m])
15s 4381 0 0
30s 4381 0 0
45s 4381 0 0
1m 4381 0 0
15s 4381 0 0
30s 4402 21 = [4402-4381]/30s = 0.7
45s 4402 0 = [4402-4381]/30s = 0.7
2m 4423 21 = [4423-4402]/30s = 0.700023
15s 4423 0 = [4423-4402]/30s = 0.7
30s 4440 17 = [4440-4423]/30s = 0.56666666
45s 4440 0 = [4440-4423]/30s = 0.56666666
3m 4456 16 = [4456-4440]/30s = 0.53333333
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.