PromQL:按实例分组时的实例访问指标

PromQL: Access metric for instance while grouping by instance

有没有办法在按实例分组时访问当前实例。我想要做的是在对实例进行分组时获得 kube_node_status_capacity_cpu_cores。

目前我正在对 cpu 个核心的数量进行硬编码,但我想对其进行参数化,因为节点可能具有不同数量的核心。

我现在的 promQL 查询:

(1 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[15s])))) * 0.007 + 0.23) * 165 * 1.125 * 4) 

其中 4 是 CPU 的数量。我现在想要的是

(1 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[15s])))) * 0.007 + 0.23) * 165 * 1.125 * kube_node_status_capacity_cpu_cores{instance=currentInstance}) 

感谢您的帮助

编辑

我现在知道为什么使用 on(instance) 的方法不起作用了。左边的实例标签是提供cpu时间的node exporter的ip。右边的实例是kube-state-metrics pod的ip。

我真正需要的是以某种方式将状态指标中的节点映射到相关节点导出导出器的节点名称上。有什么想法吗?

编辑 2

在我的具体案例中,我正在寻找不同的查询。但是接受的答案实际上对以后的参考很有帮助,因为如果我描述正确的话,它会正确回答问题。

您可以使用 on() 运算符:

sum by(instance) (metric1) * on(instance) metric2 * 0.007 + 0.23

如果只有一个 metric2instance 匹配,它将起作用。否则,您需要对 metric2 应用一些聚合(例如使用 sum()avg() 等)或者过滤掉不相关的时间序列 (metric2{foo="bar"})。 docs.

中有关一对一向量匹配的更多信息