簡體   English   中英

在 Prometheus 中對兩個不同的指標進行分組后如何划分?

[英]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_namezone ,而/右側的時間序列僅包含一個 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.

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