当前位置: 首页 > news >正文

Prometheus CPU 飙升 PromQL 排查思路

如果node_cpu_seconds_total计算的值是正常的,这就说明数据源本身没问题,问题很可能出在Prometheus查询和聚合逻辑上。既然原始指标是正常的,但最终图表显示所有VM CPU 100%,就需要重点排查几个关键点:

🎯 核心问题定位

1. 检查当前使用的PromQL(最可能的问题点)

请分享你现在使用的CPU使用率查询语句,很可能存在以下问题:

常见错误写法:

# 错误1:没有按时间范围聚合 (1 - avg by (instance) (node_cpu_seconds_total{mode="idle"})) * 100 # 这样会直接使用瞬时值,而不是变化率 # 错误2:rate() 函数使用不当 100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[1m]))) * 100 # 如果数据采集有间隔,短时间窗口可能不稳定 # 错误3:聚合维度错误 100 - avg(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100 # 没有按instance聚合,可能把空闲CPU平均后得到错误结果

正确写法应该是:

# 标准CPU使用率计算公式 100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)

2. 快速验证方法

在Prometheus UI中执行以下查询,对比结果:

# 查询1:查看各个mode的真实分布 sum by (mode, instance) (rate(node_cpu_seconds_total[5m])) # 这个查询会显示每个实例在不同CPU mode下的时间占比 # 正常情况下,idle应该是最大的,其他mode(user, system, iowait等)总和应该很小

如果idle显示正常(比如95%+),但其他mode加起来很小,说明:

  • 可能是mode="steal"(虚拟化环境中的CPU争用)异常高
  • 或者某个mode被错误地排除在计算之外

3. 检查Grafana面板设置

如果是在Grafana中看到的异常,检查:

面板配置检查清单:

  • 查询类型:确保是"Range"而不是"Instant"
  • 时间范围:检查是否设置了过短的时间范围
  • 步长(Step):如果step设置太大,可能会导致数据点稀疏,Grafana会进行插值,可能产生错误曲线
  • Legend格式:检查是否所有instance都正确显示

4. 验证其他相关指标

看看这些指标是否也异常:

# 检查系统负载(如果CPU真的100%,负载应该很高) node_load1 # 检查CPU等待时间(如果CPU真的100%,这个应该很低) rate(node_cpu_seconds_total{mode="iowait"}[5m]) * 100 # 检查CPU steal时间(如果是虚拟化环境) rate(node_cpu_seconds_total{mode="steal"}[5m]) * 100

5. Grafana特有的问题

有时是Grafana的配置问题导致显示异常:

可能的情况:

  • 面板使用了错误的单位:比如用了"percent"但实际数据是0-1的范围
  • 数据转换问题:检查Transform选项卡,看是否有不必要的转换
  • 查询缓存:尝试刷新Grafana缓存或使用无缓存模式查看

🚀 快速诊断步骤

  1. 执行这个诊断查询
# 查看各mode的真实分布 sum by (mode) (rate(node_cpu_seconds_total[5m]))

如果看到idle明显很高(>95%),但图表显示CPU 100%,那100%是查询语句问题。

  1. 检查steal time
    如果是虚拟化环境,stealmode过高可能导致CPU计算偏差:
# 查看steal time rate(node_cpu_seconds_total{mode="steal"}[5m]) * 100

如果steal time突然飙升,说明宿主机资源竞争严重,但虚拟机实际负载并不高。

  1. 对比两个查询
# 查询A:你当前使用的(错误的) 你的当前查询 # 查询B:标准正确的 100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100)

在Prometheus UI中同时运行,对比结果。

💡 最常见的解决方案

如果发现是查询语句问题,修正为:

# 最终推荐使用的CPU使用率公式 (100 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100))

或者更完整的版本(包括所有非空闲模式):

100 - (avg by (instance) ( rate(node_cpu_seconds_total{mode="idle"}[5m]) ) * 100)
http://www.jsqmd.com/news/413948/

相关文章:

  • 无缝衔接3D打印:SketchUp STL插件的革新性工作流解决方案
  • 开源工具批量处理实战指南:从手动操作到自动化流程的进化之路
  • NCM文件自由转换:ncmdump工具的全方位应用指南
  • 如何通过Zotero插件市场彻底解决学术工具扩展管理难题
  • COMSOL Multiphysi在注浆浆液渗流模拟中的奇妙应用
  • 农业大数据平台用CKEDITOR粘贴PPT图片能否支持EXIF信息保留?
  • SAGE:你的推理模型其实知道何时该停下来,只是你没让它说
  • Zotero GPT:重新定义科研文献管理的AI工作流
  • 信创环境下.NET WebForm如何封装大附件文件夹的加密传输控件?
  • HexFiend编码管理实战指南:解决多语言二进制编辑难题
  • 看完就会:9个AI论文写作软件测评!本科生毕业论文+学术写作必备工具推荐
  • PNC-27 ;PPLSQETFSDLWKLLKKWKMRRNQFWVKVQRG
  • ASP.NET Core如何通过C#实现网页端文件夹的跨平台分片上传?
  • HR 必看:AI 招聘系统的核心价值与人才库激活关键步骤
  • 互联网大厂Java求职面试实战:Spring Boot、微服务、消息队列与AI技术解析
  • 当AI客服犯了错,怎么在不动系统的情况下“洗脑“它纠正?——ReIn: 对话错误恢复的推理植入
  • 无需安装即可使用微信:浏览器插件带来的即时通讯革命
  • Switch控制器跨平台适配与全功能支持技术指南:从问题诊断到场景实践
  • VB是如何发明的。Ruby + EB = Visual Basic
  • ContextMenuManager:高效管理右键菜单的定制化体验工具
  • Zotero GPT:3个颠覆认知的AI文献处理方案让科研效率提升10倍
  • 优化候选人体验的核心:AI 招聘系统的设计与落地技巧
  • 2026益生菌饮料优质厂家推荐指南:饮乐多乳酸菌饮料/饮乐多品牌怎么样/饮乐多悠雪/饮乐多活性乳酸菌/饮乐多营养益生菌/选择指南 - 优质品牌商家
  • 航空航天Java交流如何优化分片上传的视频文件秒传判断算法效率?
  • 爬虫数据入库前的去重策略
  • 剖析洛阳地区可靠的PC钢棒设备服务商怎么收费? - 工业品牌热点
  • 突破限制与性能优化:genshin-fps-unlock帧率解锁工具完全指南
  • Elasticsearch存储与搜索爬虫大数据
  • AI 招聘系统缺了精准人岗匹配,会踩哪些招聘坑?
  • 盘点全国实力强的UPS电源服务商,金盛通科技排名如何? - 工业设备