问题
假如有两个不同的metric,有雷同的tag,须要将它们的值进行sum。
metricA:
metricA{__type__="gauge",instance="127.0.0.1:9999",job="my-test",node="node1"} 0metricA{__type__="gauge",instance="127.0.0.1:9999",job="my-test",node="node2"} 0metricA{__type__="gauge",instance="127.0.0.1:9999",job="my-test",node="node3"} 0
metricB:
metricB{__type__="gauge",instance="127.0.0.1:9999",job="my-test",node="node2"} 33metricB{__type__="gauge",instance="127.0.0.1:9999",job="my-test",node="node3"} 44
答案
PromQL求和:
sum by (node) ({__name__=~"metricA|metricB"})
后果:
{node="node1"} 0{node="node2"} 33{node="node3"} 44
原理
PromQL中应用了__name__标签,实际上它也是tag的一部分,比方metricB:
metricB{__type__="gauge",instance="127.0.0.1:9999",job="my-test",node="node2"} 33//该序列值等价于{__name__="metricB",__type__="gauge",instance="127.0.0.1:9999",job="my-test",node="node2"} 33
这样metricA和metricB对立变成领有雷同tag的metric,能够对它们进行sum等操作。