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

如何用PromQL查询可用内存?不含缓存和缓冲区的查询是否正确?

PromQL查询不含缓存和缓冲区的可用内存问题解答

你的参考查询语句无法正确实现需求

你给出的这条查询:

# Node Exporter : Memory used >= 75% (Without Cache, Buffer)
(node_memory_MemTotal_bytes - node_memory_MemFree_bytes)/ node_memory_MemTotal_bytes * 100 <= 25

不能正确查询到不含缓存和缓冲区的可用内存,原因很明确:

  • node_memory_MemFree_bytes仅代表系统中完全未被使用的内存;
  • 它没有包含可以被系统回收复用的node_memory_Buffers_bytes(缓冲区)和node_memory_Cached_bytes(缓存),而这两部分内存属于“可用”范畴,应用需要时会被即时释放。

正确的查询语句

如果要统计不含缓存和缓冲区的可用内存占比≥25%(对应已用内存≤75%),正确的计算逻辑是把可回收的缓存和缓冲区算入可用内存:

(node_memory_MemFree_bytes + node_memory_Buffers_bytes + node_memory_Cached_bytes) / node_memory_MemTotal_bytes * 100 >= 25

如果要直接对应“已用内存≥75%”的告警条件,写法为:

(node_memory_MemTotal_bytes - (node_memory_MemFree_bytes + node_memory_Buffers_bytes + node_memory_Cached_bytes)) / node_memory_MemTotal_bytes * 100 >= 75

关于node_memory_MemAvailable_bytes的说明

你之前使用的node_memory_MemAvailable_bytes是内核直接计算出的、预估可立即分配给应用的内存总量,它已经包含了空闲内存、可回收缓存和缓冲区。如果查询结果不符合预期,大概率是以下情况:

  • 你对“可用内存”的定义和内核的计算逻辑存在差异;
  • 使用的Node Exporter版本过旧,该指标的计算逻辑不完善或未被支持。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 11:31:02