如何用Prometheus查询指定集群、命名空间中Pod的CPU使用率?查询无数据排查
排查Prometheus查询返回"No data"的可能原因
针对你遇到的问题,以下是几个常见的排查方向:
确认记录规则是否存在
node_namespace_pod_container:container_cpu_usage_seconds_total:sum_irate是通过Prometheus记录规则生成的聚合指标,并非cadvisor或node-exporter的原生指标。先登录Prometheus UI直接搜索该指标名称,如果搜不到,说明你的Prometheus实例没有配置对应的记录规则,需要先基于原生的container_cpu_usage_seconds_total定义该聚合规则。检查变量与标签的匹配度
- 验证Grafana中
$pod和$namespace变量的取值是否准确:确保变量选择的Pod、命名空间在Prometheus的实际数据中存在,注意标签值的大小写、特殊字符(比如连字符、下划线)必须完全一致。 - 若涉及多集群环境,原查询未加入
cluster标签过滤,需要补充{cluster="$cluster", pod="$pod", namespace="$namespace"}(前提是你的指标带有cluster标签)。
- 验证Grafana中
检查时间范围与数据采集状态
- 扩大Grafana的查询时间范围(比如从最近1分钟改为最近15分钟),避免因时间范围过小导致无匹配数据。
- 确认cadvisor组件已正确部署并采集到原生指标
container_cpu_usage_seconds_total:在Prometheus UI搜索该指标,查看是否有对应Pod、命名空间的时间序列。如果原生指标都没有,需要排查cadvisor的部署或采集配置。
验证记录规则的执行状态
登录Prometheus的Rules页面,找到对应记录规则,检查规则是否正常加载、是否有执行错误。如果规则执行失败,会导致生成的聚合指标无数据。
内容的提问来源于stack exchange,提问作者Chel MS
相关产品推荐
相关产品推荐

