关于基于node-exporter数据的Prometheus空闲内存查询语句的疑问
PromQL内存占比查询逻辑说明
1 -的作用
node_memory_MemAvailable_bytes 表示节点可用内存容量,node_memory_MemTotal_bytes表示节点总内存容量,二者的比值是可用内存占总内存的比例,取值范围在0~1之间。
语句开头的1 -就是对这个可用比例取反,得到已使用内存占总内存的比例,乘以100后就是我们常说的内存使用率百分比。
两条语句的差异
- 原语句:
(1 - 可用比例) *100 >75,判断规则是内存使用率超过75%,符合常规的高负载告警需求,所以仅返回2条符合高负载条件的结果 - 删除
1-后的语句:可用比例 *100 >75,判断规则变成了可用内存占比超过75%,也就是内存使用率低于25%,返回的是4条负载较低的节点结果,和原语句的判断逻辑完全相反。
正确性判定
如果你的需求是监控内存使用率过高的节点,原语句是正确的。社区流传的这类查询默认加1-都是为了计算已用资源占比,符合绝大多数运维监控场景的使用习惯。如果你的需求是筛选可用内存充足的节点,才需要使用修改后的语句。
内容的提问来源于stack exchange,提问作者Ian Gregson
相关产品推荐
相关产品推荐

