You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PromQL查询cpu_usage_value or memory_usage_value仅返回CPU指标问题咨询

问题根源

你对vector1 or vector2的规则理解少了一个非常容易踩坑的默认设定:PromQL 做向量二元匹配运算时,默认会把内置的__name__标签(也就是存储指标名的标签)排除在匹配键之外。

你当前执行的查询:

cpu_usage_value or memory_usage_value

判定两个元素“标签集匹配”的逻辑是:忽略__name__的差异,剩下的所有标签(比如job/instance/host这类采集和业务标签)完全一致就算匹配。绝大多数场景下,CPU和内存使用率指标都是同个exporter在同个采集任务下上报的,除了指标名之外其余标签完全对齐——这就导致memory_usage_value的所有元素都会被判定为和左侧cpu_usage_value的元素匹配,按照or的运算规则,匹配到的元素只会保留左侧vector1的内容,右侧匹配的元素会被全部丢弃,自然看不到内存相关的结果。

除此之外还有一种低概率情况:查询的时间点上memory_usage_value本身没有有效样本(比如指标名拼写错误、对应采集任务异常、选择的时间范围在该指标开始上报之前),也会导致右侧无结果返回。

修复方案

根据实际场景选对应处理方式即可:

  • 如果你需要同时返回两个指标的所有样本,只需要通过on()明确指定把__name__纳入匹配判定的标签范围,强制要求指标名也一致才算匹配:
    cpu_usage_value or on(__name__) memory_usage_value
    
    执行后会完整保留两个指标的所有原始标签集和样本值。
  • 如果是指标本身无数据导致的问题,先单独执行memory_usage_value确认是否有返回,核对指标名拼写、对应采集任务的运行状态,确保查询时间范围内该指标有正常上报的样本即可。

快速排查tip:遇到二元运算结果不符合预期时,可以先分别单独执行两个向量的查询,确认两边各自的标签集和样本情况,能快速定位是匹配逻辑问题还是数据源问题。

内容的提问来源于stack exchange,提问作者Manish Purohit

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.02 21:57:23