我想将一个指标与另一个指标之和的结果相乘
我想尝试做的事情:
MeticOne * SUM(MetricTwo)
谢谢
最佳答案
假设您有带有标签 id
和 name
的 MetricOne
。并且您有 MetricTwo
以及标签 id
和 name
。然后,您将获得按 id
使用指标聚合的 MetricTwo
值的总和:
sum without (name) (MetricTwo)
您可以使用 on(id)
和 group_left
在 prometheus 中进行“加入”:
MetricOne
* on (id) group_left()
(sum without (name) (MetricTwo))
仅当 MetricOne
中的标签 id
也是您所在的 MetricTwo
上的 id
时,这才可能实现加入。因此,如果它们不同,尽管有行需要匹配,但您可能会看到空结果查询!
改进:
然后就需要使用label_replace
来重命名一个指标的标签并使其与另一个指标的标签匹配。假设 MetricOne
带有标签 metric_one_id
和 name
,我们希望将其重新标记为 id
。你必须这样做:
label_replace(MetricOne,"id","$1","metric_one_id", "(.+)")
然后您可以使用与 before 相同的前一个运算符:
label_replace(MetricOne,"id","$1","metric_one_id", "(.+)")
* on (metric_one_id) group_left()
(sum without (name) (MetricTwo))
关于group_left()
,group_left()
内的所有内容都将被排除在结果中。因此,如果您有更多标签,您可以将它们添加到 group_left()
或 without()
中。 Prometheus 文档解释了 group_left
运算符 here .
关于prometheus - 将矩阵与 SUM 相乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68672348/