Prometheus node-exporter CPU指标查询失败求助
解决node-exporter CPU指标获取及重复实例问题
一、先处理重复的node-exporter实例
- 检查Prometheus配置文件(通常为
prometheus.yml)的scrape_configs段,确认是否重复配置了node-exporter的采集任务,比如存在两个指向同一节点的job。 - 在目标节点执行
ps aux | grep node_exporter,确认是否真的启动了两个进程,若有则关闭多余实例,保证仅运行一个node-exporter。 - 访问
http://<节点IP>:9100/metrics,检查每个实例返回的指标是否一致,排除端口冲突导致的重复发现。
二、解决CPU指标查询无结果问题
1. 确认node-exporter是否正常采集CPU指标
直接访问上述metrics端点,搜索是否存在node_cpu_前缀的指标(比如node_cpu_seconds_total):
- 如果没有,检查node-exporter启动参数,是否添加了
--no-collector.cpu这类禁用CPU采集的参数,删除后重启服务。 - 若使用旧版本node-exporter,建议升级到v1.7.x及以上的稳定版本,部分旧版本存在采集逻辑缺陷。
2. 确认Prometheus抓取状态正常
- 打开Prometheus UI(默认
http://<PrometheusIP>:9090),进入Status -> Targets页面,查看node-exporter的job状态是否为UP:- 若为
DOWN,排查网络连通性(比如节点防火墙是否开放9100端口)。 - 若为
UP,先执行up{job="node-exporter"}(替换为你的实际job名称)确认抓取正常,再尝试查询node_cpu_seconds_total,可添加标签过滤缩小范围,比如node_cpu_seconds_total{instance="<节点IP>:9100",mode="idle"}。
- 若为
3. 常用CPU指标查询示例
- 单核心CPU使用率:
100 - (avg by (instance, cpu) (irate(node_cpu_seconds_total{mode="idle"}[1m])) * 100) - 整机CPU使用率:
100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[1m])) * 100)
三、额外排查点
- 检查Prometheus的
scrape_interval配置(默认15s),若间隔过大可能导致指标更新不及时。 - 容器化部署的node-exporter,需确保容器挂载了主机的
/proc和/sys目录,否则无法读取CPU系统信息。
内容的提问来源于stack exchange,提问作者cloud-engineer
相关产品推荐
相关产品推荐

