如何用PromQL获取instance与node标签值相同的所有指标?
解决PromQL筛选instance与node标签值相同序列的问题
你可以通过两种方式实现需求:
方法一:直接标签值比较(Prometheus 2.27+)
从Prometheus 2.27版本开始,支持在标签选择器中直接比较两个标签的值,写法非常直观:
max_over_time(cbnode_systemstats_cpu_utilization_rate{instance == node}[6h])
这个查询会自动筛选出所有instance标签值与node标签值相同的时间序列,然后计算每个序列过去6小时的CPU利用率最大值。
方法二:兼容旧版本的排除法
如果你的Prometheus版本低于2.27,可以用unless操作符排除掉instance与node标签值不同的序列,再计算最大值:
max_over_time((cbnode_systemstats_cpu_utilization_rate unless cbnode_systemstats_cpu_utilization_rate{instance != node})[6h])
原理是先取全部指标序列,再排除掉instance和node不匹配的部分,剩下的就是符合要求的序列,最后计算时间范围内的最大值。
内容的提问来源于stack exchange,提问作者Laxmikant
相关产品推荐
相关产品推荐

