prometheus -- PromQL(sum不同metric的值)

问题 假设有两个不同的metric,有相同的tag,需要将它们的值进行sum。
metricA:

metricA{__type__="gauge",instance="127.0.0.1:9999",job="my-test",node="node1"}0 metricA{__type__="gauge",instance="127.0.0.1:9999",job="my-test",node="node2"}0 metricA{__type__="gauge",instance="127.0.0.1:9999",job="my-test",node="node3"}0

【prometheus -- PromQL(sum不同metric的值)】metricB:
metricB{__type__="gauge",instance="127.0.0.1:9999",job="my-test",node="node2"}33 metricB{__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等操作。

    推荐阅读