簡體   English   中英

Prometheus/PromQL 減去兩個量規指標

[英]Prometheus/PromQL subtract two gauge metrics

我有來自兩個不同實例的這個量規指標“metric_awesome”。 我想做的是像這樣從實例二中減去實例一

metric_awesome{instance="one"} - metric_awesome{instance="two"}

不幸的是,結果集是空的。 有沒有人經歷過這個?

這里的問題是標簽不匹配。 你想要的是:

metric_awesome{instance="one"} - ignoring(instance) metric_awesome{instance="two"}

如果有人搜索這個想要執行此操作的一對多減法,請查看group_right除了之前寫的內容之外。

metric_awesome{instance="one"} - ignoring(instance) group_right metric_awesome{job="compare-instances"}

另見普羅米修斯文檔

默認情況下,Prometheus 按以下方式執行a - b

  1. 它選擇查詢a所有時間序列。
  2. 它選擇所有時間序列進行b查詢。
  3. 它在ab搜索具有相同標簽集的時間序列對。
  4. 它計算找到的具有相同標簽集的對中時間序列之間的差異。

有關詳細信息,請參閱這些文檔

metric_awesome{instance="one"} - metric_awesome{instance="two"}返回空結果,因為-左側的所有匹配時間序列都包含instance="one"標簽,而右側的所有時間序列side of -包含instance="two"標簽。 這里沒有具有相同標簽集的時間序列對。

可以使用on() 、 ignoring( ignoring()group_left()group_right()修飾符更改此行為。

例如, metric_awesome{instance="one"} - ignoring(instance) metric_awesom{instance="two"}指示在搜索具有相同標簽的時間序列對時忽略instance標簽。 當一側的多個時間序列匹配另一側-單個時間序列時,這可能會導致多對一匹配。 默認情況下,Prometheus 在這種情況下會返回錯誤。 這可以通過向-運算符添加group_left()group_right()修飾符來解決:

metric_awesome{instance="one"}
  - ignoring(instance) group_left()
metric_awesome{instance="two"}

要么

metric_awesome{instance="one"}
  - ignoring(instance) group_right()
metric_awesome{instance="two"}

有關這些修飾符的更多詳細信息,請參閱這些文檔

暫無
暫無

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

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