簡體   English   中英

普羅米修斯記錄規則以保持(計數器的速率)的最大值

[英]Prometheus recording rule to keep the max of (rate of counter)

我正面臨一個困境。 出於性能原因,我正在為我的 Nginx 請求/秒指標創建記錄規則。

原始查詢

sum(rate(nginx_http_request_total[5m]))

錄音規則

    rules:
    - expr: sum(rate(nginx_http_requests_total[5m])) by (cache_status, host, env, status)
      record: job:nginx_http_requests_total:rate:sum:5m

在原始查詢中,我可以看到我的最大流量為 6.6k,但在記錄規則中為 6.2k。 這是 400 TPS 的差異。

這是過去一周的指標

過去 7 天

題 :

有什么方法可以獲取原始查詢的最大值並將其保存為記錄規則。 由於是 TPS,我只關心最大值,而不關心最小值。

我認為在一些非常短的爆發中具有 6% 的價值差異是非常好的。

在您的查詢中,您將獲得(並記錄)過去 5 分鍾內的平均 TPS。 那里沒有執行“最大”。 該值將根據查詢評估的確切時間而變化 - 可能是為什么您看到原始查詢和記錄規則存儲的值之間存在差異。 Prometheus 會在執行諸如 rate() 之類的函數時推斷一些數據。 如果您在時間 t 有最后一個數據點,但在 t+30s 運行查詢,那么 Prometheus 將嘗試在 t+30s 推斷值(通常會注意到這是因為離散事件的計數器將顯示小數值)

如果您真的在追求峰值,您可能需要使用 irate() 函數。 它將在每次評估時使用兩個最近的點來計算當前的增長,而不是 rate() 提供的 X 分鍾平均值。

暫無
暫無

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

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