![](/img/trans.png)
[英]Divide two Prometheus metrics that don't have the same dimension set?
[英]How to divide after grouping two different metrics in Prometheus?
我目前正在嘗試對可用區內堆疊的 Kube.netes pod 發出警報。 我已經成功地使用了兩個不同的指標,以至於我可以看到一個應用程序有多少 pod 在特定可用區上運行。 但是,由於縮放,我希望警報基於百分比……因此我們可以在特定百分比的 pod 在一個 AZ 上運行時發出警報(即超過 70%)。
我當前的查詢:
sum(count(kube_pod_info{namespace="somenamespace", created_by_kind="StatefulSet"}) by (created_by_name, node) * on (node) group_left(az_info) kube_node_labels) by (created_by_name, az_info)
還有一些選擇了output:
{created_by_name="some-db-1",az_info="az1"} 1
{created_by_name="some-db-1",az_info="az2"} 4
{created_by_name="some-db-2",az_info="az1"} 2
{created_by_name="some-db-2",az_info="az2"} 3
例如,在上面的 output 中,我們可以看到 4 個 db-1 pod 堆疊在 az2 上,而不是 1 個 pod 堆疊在 az1 上。 在這種情況下,我們希望發出警報,因為 80% 的 db-1 pod 堆疊在單個 AZ 上。
由於output包含多個AZ上的多個pod,感覺用Prometheus單次查詢可能很難得到百分比,不知道有沒有大佬能給個解決辦法?
謝謝!
your_expression
/ ignoring(created_by_name) group_left
sum without(created_by_name)(your_expression)
會給你整體的比例,然后你可以做> .8
。
默認情況下,Prometheus 在/
運算符的左側和右側划分具有相同標簽集的時間序列對。 如果/
左側的時間序列包含兩個標簽,例如created_by_name
和zone
,而/
右側的時間序列僅包含一個 label 例如created_by_name
,Prometheus 將返回一個空結果,因為它找不到時間序列與相同的划分標簽集配對。 這可以通過使用on()
和group_left()
修飾符來解決 - on()
修飾符限制標簽集,在搜索時間序列對時會考慮這些標簽集。 group_left()
修飾符允許將多個時間序列與/
左側給定on()
標簽集與/
右側具有相同on()
標簽集的單個時間序列進行匹配。 在此處查看更多詳細信息。
因此,將每個時間序列與一對(created_by_name, zone)
標簽除以具有匹配的created_by_name
label 的總和時間序列的結果查詢如下所示:
sum(q) by (created_by_name, zone)
/ on(created_by_name) group_left()
sum(q) by (created_by_name)
其中q
必須替換為原始查詢count(kube_pod_info{namespace="somenamespace", created_by_kind="StatefulSet"}) by (created_by_name, node) * on (node) group_left(zone) kube_node_labels
。
通過使用MetricsQL中的WITH 表達式,可以將查詢簡化為以下查詢:
with (
q = count(
kube_pod_info{namespace="somenamespace", created_by_kind="StatefulSet"}
) by (created_by_name, node)
* on (node) group_left(zone)
kube_node_labels
)
sum(q) by (created_by_name, zone)
/ on(created_by_name) group_left()
sum(q) by (created_by_name)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.