在Node Exporter中计算磁盘使用率:Free bytes与Avail bytes如何选择?
答案:优先选择
node_filesystem_avail_bytes 计算实际可用空间占比 嗨,这个问题我之前配置Prometheus监控磁盘告警的时候也纠结过,刚好能给你掰扯清楚两者的核心差异:
node_filesystem_free_bytes:系统层面的"纯空闲空间"
这个指标是文件系统里完全没被使用的空间,但其中包含了Linux默认预留的root专属应急空间(一般是总容量的5%),还有文件系统元数据占用的部分——这些空间普通用户和业务进程是没法读写的,对业务来说等于"不可用"。node_filesystem_avail_bytes:业务层面的"实际可用空间"
这个指标已经扣除了root预留空间和元数据占用,是当前普通用户/业务进程真正能用来写入数据的空间,完全贴合业务实际使用场景。
为什么选它?
如果你的监控是为了给业务服务告警(比如磁盘快满导致应用写失败),用avail计算的占比才是真实的业务压力。举个直观的例子:
假设根分区总容量100G,系统预留了5G给root应急,当前业务已经用了92G。这时候free显示的空闲空间是8G,但其中5G是业务碰不到的,实际能用来写数据的只有3G——用free计算的已用占比是92%,但业务视角下的实际已用占比已经接近97%,只有用avail才能触发精准的告警。
给你一个实用的PromQL示例,用来过滤临时文件系统后计算根分区的实际已用占比:
1 - (node_filesystem_avail_bytes{mountpoint="/", fstype!="tmpfs", fstype!="devtmpfs"} / node_filesystem_size_bytes{mountpoint="/", fstype!="tmpfs", fstype!="devtmpfs"})
当然,如果你只是想查看系统整体的磁盘空闲情况(比如运维统计全局资源),free也可以用,但业务监控场景下avail绝对是更靠谱的选择。
内容的提问来源于stack exchange,提问作者awesomemypro
相关产品推荐
相关产品推荐

