我有两个不同的指标:
具有字段类型的 metric_a
metric_b 具有字段类型(相同)
我试图总结同一类型的 a 和 b。
如果类型仅存在于 metric_a 上而不存在于 metric_b 上 - 它应该返回 metric_b 的结果。
我在普罗米修斯上尝试了很多选项:
sum by (type)(metric_a{job=~"provision-dev"}) or vector(0) + sum by(type)(metric_b{job=~"provision-dev"}) or vector(0)
:仅返回metric_a的值,不计算metric_b的结果。
sum by (type)(metric_a{job=~"provision-dev"}) + sum by(type)(metric_b{job=~"provision-dev"})
:仅返回metric_b的值,不计算metric_a的结果。
sum by (cluster_id)(provision_scale_out_failures{job=~"provision-dev"} + provision_scale_out_success{job=~"provision-dev"})
:这甚至不是一个正确的查询
基本上这是一个成功的例子:
指标_a:
- 类型 = 类型_1,总和 = 5
- 类型 = type_2,总和 = 2
指标_b:
- 类型 = 类型_1,总和 = 4
- 类型 = type_3,总和 = 3
查询结果:
- 类型 = 类型_1,总和 = 9
- 类型 = type_2,总和 = 2
- 类型 = type_3,总和 = 3
这是使用时的预期行为二元运算符 https://prometheus.io/docs/prometheus/latest/querying/operators/#binary-operators:双方都必须有匹配的标签集才能考虑在内。
如果您希望能够聚合两侧并获得单个,您首先必须获得union https://prometheus.io/docs/prometheus/latest/querying/operators/#logical-set-binary-operators使用不同的指标__name__
label:
sum by(__name__,type)(metric_a{job=~"provision-dev"}) or on(__name__) sum by(__name__,type)(metric_b{job=~"provision-dev"})
您可以级联聚合运算符 https://prometheus.io/docs/prometheus/latest/querying/operators/#aggregation-operators:
sum by (type) (sum by (__name__,type)(metric_a{job=~"provision-dev"}) or on(__name__) sum by(__name__,type)(metric_b{job=~"provision-dev"}))
最后,您还可以将所有内容压缩为:
sum by (type) ({__name__=~"metric_a|metric_b",job=~"provision-dev"})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)