簡體   English   中英

Prometheus:計算一段時間內的指標值

[英]Prometheus: Count metric value over a period of time

我英語說得不太好,但我需要一些建議。 我有普羅米修斯。 如何計算服務在一段時間內的停機時間? 這是我的 function

 irate(ALERTS{job="blackbox", alertstate="firing"}[2h])

在此處輸入圖像描述

從您提供的圖像來看,當服務器關閉時,指標的值(比如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)

如果度量標准可以有01值,則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])

如果指標可以有01以外的其他值,那么 Prometheus 還沒有提供用於計算具有特定值的樣本數量的函數:(

還有另一個類似 Prometheus 的系統,它允許在指定的回溯 window - VictoriaMetrics上計算具有給定值的原始樣本的數量(我是該系統的核心開發人員)。 它為此任務提供count_eq_over_time function。 例如,以下 MetricsQL 查詢返回過去一小時內值為42some_metric時間序列的樣本數:

count_eq_over_time(some_metric[1h], 42)

看起來您正在使用 Grafana 作為可視化工具。 可以將表達式添加到面板。 這將產生第二個指標(在我下面 B 的示例中)。 它位於“編輯”的“查詢”選項卡中。 您可能需要更新的 Grafana 版本(AFAIK 它是在 v6.x 中引入的)

您的案例示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM