使用 df 命令和 check_snmp_storage.pl 的不同磁盘使用情况

使用 df 命令和 check_snmp_storage.pl 的不同磁盘使用情况

我是一名初级系统管理员,从事 IT 监控领域的工作。我有一个问题check_snmp_storage.pl该脚本显示某些分区 (/var) 磁盘使用情况比 df 命令在同一服务器上显示的情况低一些百分比。

我这样调用 check_snmp_storage.pl :

perl check_snmp_storage.pl -2 -C public <IP_ADDRESS> -m /var -w 80 -c 90 -G

输出如下:

Alarm at 15
SNMP v2c login
Filter : /var
OID : 1.3.6.1.2.1.25.2.3.1.3.8, Desc : Shared memory
OID : 1.3.6.1.2.1.25.2.3.1.3.56, Desc : /dev/shm
OID : 1.3.6.1.2.1.25.2.3.1.3.31, Desc : /var
   Name : /var, Index : 31
OID : 1.3.6.1.2.1.25.2.3.1.3.6, Desc : Memory buffers
OID : 1.3.6.1.2.1.25.2.3.1.3.10, Desc : Swap space
OID : 1.3.6.1.2.1.25.2.3.1.3.40, Desc : /sys/fs/cgroup
OID : 1.3.6.1.2.1.25.2.3.1.3.7, Desc : Cached memory
OID : 1.3.6.1.2.1.25.2.3.1.3.3, Desc : Virtual memory
OID : 1.3.6.1.2.1.25.2.3.1.3.36, Desc : /run
OID : 1.3.6.1.2.1.25.2.3.1.3.32, Desc : /
OID : 1.3.6.1.2.1.25.2.3.1.3.1, Desc : Physical memory
storages selected : 1
1.3.6.1.2.1.25.2.3.1.6.31  : 320923825
1.3.6.1.2.1.25.2.3.1.4.31  : 4096
1.3.6.1.2.1.25.2.3.1.5.31  : 428831117
Descr : /var
Size :  428831117
Used : 320923825
Alloc : 4096
Perf data : /var=1224GB;
/var: 75%used(1224GB/1636GB) (<80%) : OK

相反,在同一服务器上调用的 df 命令显示磁盘使用情况,如下所示:

Filesystem      Size  Used Avail Use% Mounted on
/dev/md3        1.8T  1.4T  354G  79% /var

对于我的监控集群来说,差异太大,无法作为有关我们系统运行状况的良好信息源。

我试图找出两者之间的真正区别是什么,但我找不到任何解释。我假设 df “增加了一些东西”到磁盘使用量,但我不知道是什么,也不知道如何使这两个值相同(或非常接近,如 1% 差异)。

答案1

查看磁盘系统预留和提供的 snmp 信息。这篇文章解释了这两个结果之间的差异:

https://thwack.solarwinds.com/product-forums/f/general-it-topics/19043/linux-drive-monitors-not-accounting-for-reserved-space

可以看到,net-snmp只返回Used和Size,但不返回available。这使得监控软件可以在没有所有相关数据(尤其是 df 的可用列中可用的值)的情况下执行计算:

可用空间实际上以两种不同的方式拉取 - bfree 和 bavail

df.c:

input_units = fsu.fsu_blocksize;
      output_units = output_block_size;
      total = fsu.fsu_blocks;
      available = fsu.fsu_bavail;
      negate_available = (fsu.fsu_bavail_top_bit_set
        & (available != UINTMAX_MAX));
      available_to_root = fsu.fsu_bfree;
[..]
      used = total - available_to_root;

df 以著名的 5% 磁盘系统预留空间返回可用磁盘空间,而 snmp 返回可用空间,而不考虑该预留空间。

相关内容