使用 Prometheus 获取总磁盘空间和可用磁盘空间

Posted

技术标签:

【中文标题】使用 Prometheus 获取总磁盘空间和可用磁盘空间【英文标题】:Get total and free disk space using Prometheus 【发布时间】:2019-12-12 21:57:01 【问题描述】:

我尝试获取 Kubernetes VM 上的 Total 和 Free 磁盘空间,以便显示占用空间的百分比。我尝试了各种指标,包括名称中的“文件系统”,但这些指标都没有显示正确的总磁盘大小。应该使用哪一个?

这是我尝试过的指标列表

node_filesystem_size_bytes
node_filesystem_avail_bytes
node:node_filesystem_usage:
node:node_filesystem_avail:
node_filesystem_files
node_filesystem_files_free
node_filesystem_free_bytes
node_filesystem_readonly

【问题讨论】:

【参考方案1】:

根据kubernetes-mixin,您可以使用node:node_filesystem_usage,但如果此指标无法显示您的正确值,请确保device 设置正确。

我强烈建议使用 Prometheus Graph 或 Graphana Explore 选项卡来检查所有可用指标。

【讨论】:

如何确保设备设置正确?使用面板“图表”并调用node:node_filesystem_usage 我只收到一条带有微小值的行。我看到了设备,但我不知道如何验证它是否正确,或者如果错误如何更改它 正如您在node:node_filesystem_usage 定义中看到的那样,它需要node_filesystem_avail_bytesnode_filesystem_size_bytes,所以首先检查这些指标。【参考方案2】:

根据我的 Grafana 仪表板,以下指标可以很好地提醒可用空间,

100 - ((node_filesystem_avail_bytesmountpoint="/",fstype!="rootfs" * 100) / node_filesystem_size_bytesmountpoint="/",fstype!="rootfs")

该公式给出了指定磁盘上可用空间的百分比。确保在指标中包含挂载点和 fstype。

【讨论】:

使用你的方法我得到不正确的总磁盘大小 - 我知道我总共有 40Gb,但显示的是 42Gb。你能解释一下为什么会这样吗?我只是复制粘贴node_filesystem_size_bytesmountpoint="/",fstype!="rootfs" 你是用 10 的幂转换的吗?例如,从字节到 kb,除以 1024 是预期的,这在从字节到 Gb 时会有所不同。 我指定node_filesystem_size_bytesmountpoint="/",fstype!="rootfs" 以字节为单位查询 那么,例如输出是什么? 好的,让我们将 42 万亿数字除以 1024 得到 KB,然后再除以 1024 得到 Mb。此时我计算出 40058 mb。现在除以 1024 约为 39 GB。您可以信任此指标的输出,并将其转换为百分比通常很有用。【参考方案3】:

FS 利用率可以计算为

100 - (100 * ((node_filesystem_avail_bytesmountpoint="/",fstype!="rootfs" )  / (node_filesystem_size_bytesmountpoint="/",fstype!="rootfs") ))

【讨论】:

以上是关于使用 Prometheus 获取总磁盘空间和可用磁盘空间的主要内容,如果未能解决你的问题,请参考以下文章

如何获取 Posix 系统中的总可用磁盘空间?

prometheus 常用指标

SQL Server--获取磁盘空间使用情况

如何在 Windows 上获取总磁盘大小?

获取磁盘总空间和剩余空间

获取 Android 上的所有总空间和可用空间