我想在Solaris 10和Ubuntu 11.10上使用SNMP收集文件系统空间信息。 问题是SNMP似乎没有对应于df的“可用”列的属性。
例如,这里是我的本地文件系统的df -k输出:
Filesystem 1K-blocks Used Available Use% Mounted on /dev/sdb1 36841040 13489312 21480268 39% /
以下是SNMP守护进程的相关属性(按照Net-SNMP文档 ):
HOST-RESOURCES-MIB::hrStorageDescr.31 = STRING: / HOST-RESOURCES-MIB::hrStorageSize.31 = INTEGER: 9210260 HOST-RESOURCES-MIB::hrStorageUsed.31 = INTEGER: 3372328 HOST-RESOURCES-MIB::hrStorageAllocationUnits.31 = INTEGER: 4096 Bytes
现在9210260*4 = 36841040和3372328*4 = 13489312 ,它们与df输出中的列匹配。 但是,我看不到与“可用”列相对应的任何属性。 请注意,这不仅仅是减去两列的问题 – “可用”列似乎考虑了每个文件系统不同的隐藏开销。
有没有办法使用SNMP收集或计算“可用”列信息?
我认为你需要在标准的SNMP之上做额外的configuration来获得可用的空间。 NET-SNMP文档提到以下内容:
在监视磁盘空间时有两个表,UCD-SNMP-MIB:dskTable和HOST-RESOURCES-MIB:hrStorageTable。 在这些表中有两个明显的区别:UCD-SNMP-MIB:dskTable需要在snmpd.conf中有一个configuration指令,但它也直接衡量了可用空间的百分比
所以听起来你只需要使用UCD-SNMP-MIB而不是HOST-RESOURCES-MIB来到dskTable而不是hrStorageTable。