如何在Prometheus中跨job对不同指标进行求和运算
问题原因与解决方法
错误根因
PromQL 执行加减乘除等算术运算时,默认规则是对左右两边标签集合完全相同的时间序列进行一对一匹配后再计算。
你当前两个指标分别来自不同的采集Job,默认附带的核心标签完全不重合:
- metric1 至少携带标签
job="serviceA"、instance="serviceA:8080" - metric2 至少携带标签
job="serviceB"、instance="serviceB:8080"
没有任何一组时间序列的标签完全匹配,因此运算不会返回任何结果,该问题和指标是counter还是gauge类型无关。
修复方案
如果两个指标均为单条时间序列,只需要在运算时指定忽略不匹配的标签即可,示例语法如下:
# 忽略job、instance两个差异标签后做匹配求和 metric1 + ignoring(job, instance) metric2
如果后续两个指标存在共有的维度标签需要对齐,也可以用on(公共标签名列表)语法指定匹配依据。
内容的提问来源于stack exchange,提问作者MorRich
相关产品推荐
相关产品推荐

