[英]Prometheus: Count metric value over a period of time
從您提供的圖像來看,當服務器關閉時,指標的值(比如metric_x
)似乎為 1,否則為 0。
您可以使用sum_over_time(range-vector)
查詢 function 來計算在給定間隔內該值等於 1 的次數。
以下查詢計算過去 5 分鍾內metric_x
的總和(即mertic_x
等於 1 的次數)。
sum_over_time(metric_x{job="xxx"}[5m])
同樣,以下查詢計算一周前一天的metric_x
總和。 這就像一個范圍,從開始時間到結束時間。
sum_over_time(metric_x{job="xxx"}[1d] offset 1w)
參考:
更新:
好吧,如果我是你,我會為查詢創建一個記錄規則,並對規則創建的新指標執行sum_over_time()
。
groups:
- name: rules
rules:
- record: blakbox:ALERTS:irate
expr: irate(ALERTS{job="blackbox", alertstate="firing"}[2h])
sum_over_time(blakbox:ALERTS:irate{job="blackbox", alertstate="firing"}[1d] offset 1w)
如果度量標准可以有0
或1
值,則sum_over_time(metric[d])
會在指定的后視 window d
上計算1
值的數量。 例如, sum_over_time(up[1h])
返回過去一小時內具有1
值的up
采樣數。 然后可以將0
值的數量計算為count_over_time(up[1h]) - sum_over_time(up[1h])
。
如果指標可以有0
和1
以外的其他值,那么 Prometheus 還沒有提供用於計算具有特定值的樣本數量的函數:(
還有另一個類似 Prometheus 的系統,它允許在指定的回溯 window - VictoriaMetrics上計算具有給定值的原始樣本的數量(我是該系統的核心開發人員)。 它為此任務提供count_eq_over_time function。 例如,以下 MetricsQL 查詢返回過去一小時內值為42
的some_metric
時間序列的樣本數:
count_eq_over_time(some_metric[1h], 42)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.