[英]How to sum prometheus counters when k8s pods restart
我在 kube.netes 集群中運行 Prometheus。 一切都在運行 find 並且我的 UI pod 正在計算訪問者。
請忽略標題,您在這里看到的是圖片底部的查詢。 這是一個櫃台。 圖表中的差距是由於 pod 重新啟動造成的。 我有兩個 pod 同時運行!
現在假設我想計算訪問者總數,所以我需要對所有 pod 求和
考慮到第一張圖片,這就是我所期望的,對嗎?
但是,我不希望圖表在 pod 重新啟動時丟失。 我想在指定的時間內累積一些東西(以某種方式忽略 pod 重新啟動)。 希望這是有道理的。 有什么建議么?
更新
下面建議做以下事情
它有點難以看到,因為我已經在那里繪制了所有內容,但建議的答案sum(rate(NumberOfVisitors[1h])) * 3600
是那里的連續綠線。 我現在不明白的是它有3個值? 還有為什么21:55之后數值會增加,因為我可以看到之前的一些數值。
由於該方法似乎沒問題,我注意到實際增加實際上是 3,從 1 到 4。在下圖中,我只使用了一個時間序列來減少噪聲
率,然后求和,然后乘以以秒為單位的時間范圍。 這也將處理櫃台上的翻轉。
Prometheus 不提供對計數器求和的功能,這可能會被重置。 此外,Prometheus 中的increase() function 存在一些問題,可能無法使用它來查詢指定時間范圍內的計數器增加:
t
increase(NumberOfVisitors[1m])
可能會錯過最后一個原始樣本之間的計數器增加在t-1m
時間和(t-1m... t]
時間范圍內的第一個原始樣本之前。請在此處和此處查看更多詳細信息。NumberOfVisitors
計數器在 Prometheus 第一次刮取該計數器之前增加到 10,那么在第一個樣本的時間范圍內的increase()
將少計計數器增加 10。 Prometheus 開發人員將解決這些問題 - 請參閱此設計文檔。 同時,可以使用VictoriaMetrics - 它的increase()
function 沒有這些問題。
回到最初的問題 - 多個計數器的總和,可能會被重置,可以在 VictoriaMetrics 中使用以下MetricsQL查詢返回:
running_sum(sum(increase(NumberOfVisitor)))
它使用以下功能:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.