【发布时间】:2021-08-05 19:14:00
【问题描述】:
我想将一个指标与另一个指标之和的结果相乘
我想做的事:
MeticOne * SUM(MetricTwo)
谢谢
【问题讨论】:
标签: prometheus grafana
我想将一个指标与另一个指标之和的结果相乘
我想做的事:
MeticOne * SUM(MetricTwo)
谢谢
【问题讨论】:
标签: prometheus grafana
假设您有MetricOne,标签为id 和name。你有MetricTwo,标签也有id和name。然后你有来自MetricTwo 的值的总和,由id 使用度量:
sum without (name) (MetricTwo)
您可以使用on(id) 和group_left 在普罗米修斯中“加入”:
MetricOne
* on (id) group_left()
(sum without (name) (MetricTwo))
只有当您加入的MetricTwo 上的MetricOne 中的标签id 也是id 时,这才有可能。因此,如果它们不同,您可能会看到一个空的结果查询,尽管有要匹配的行!
改进:
然后到了需要使用label_replace 重命名一个指标的标签并使其与另一个指标的标签匹配的时候。假设MetricOne 带有标签metric_one_id 和name,我们想将其重新标记为id。你必须这样做:
label_replace(MetricOne,"id","$1","metric_one_id", "(.+)")
然后你可以使用之前相同的previous操作符:
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。
【讨论】: