簡體   English   中英

如何將普羅米修斯 promql 中的查詢的所有結果聚合為 1 個平均值

[英]how agreggate all results into 1 average from a query in prometheus promql

我有一個運行許多應用程序的 kube.netes 集群。 每 1 個命名空間 1 個 pod 被視為一個應用程序。 每個命名空間僅運行 1 個 pod(app pod)。 一個例子是這樣的:

(Note that id<x> is a complete random string, so id1 it's not what an id looks like)
namespace: app-id1, only-pod-running-in-this-namespace: app-id1   
namespace: app-id2, only-pod-running-in-this-namespace: app-id2   
namespace: app-id3, only-pod-running-in-this-namespace: app-id3  
namespace: app-id4, only-pod-running-in-this-namespace: app-id4   

清單不勝枚舉。 我試圖通過檢查 pod 狀態來獲取每個應用程序的正常運行時間。 在普羅米修斯,我是這樣做的:

kube_pod_status_ready{condition="true", namespace=~"app-.*", pod=~"app-.*"}

這將返回一個包含所有現有應用程序的表(每條記錄是 1 個應用程序狀態)及其正常運行時間值(如果 pod 啟動則為 1,如果 pod 已關閉則為 0)。

現在我想創建另一個指標,返回所有應用程序組合的平均值。 也就是說,我只希望返回所有應用程序的平均值的 1 條記錄。 所以,假設我有 100 個應用程序,然后如果 1 下降 5 分鍾,我希望 5 分鍾 window 結果顯示 99(或實際上 0.99),而不是 99 個應用程序顯示 1,而 1 個應用程序顯示 0。我希望這是有道理的。 這就是我正在嘗試的方式,但它不起作用,因為它返回一個表,每個應用程序有 1 條記錄。

avg_over_time(kube_pod_status_ready{condition="true", namespace=~"app-.*", pod=~"app-.*"}[5m])

我的理解是您想要所有應用程序實例的百分比? kube_pod_status_ready{condition="true", namespace=~"app-.*", pod=~"app-.*"}啟動時返回1 ,關閉時返回0 ?如果是這樣,可能是一個sum(kube_pod_status_ready{condition="true", namespace=~"app-.*", pod=~"app-.*"}) / count(kube_pod_status_ready{condition="true", namespace=~"app-.*", pod=~"app-.*"})可以嗎?

暫無
暫無

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

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