我想在 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 收集或计算“可用”列信息?
答案1
我认为您需要在标准 SNMP 基础上进行额外配置才能获得可用空间。NET-SNMP 文档提到以下内容:
监控磁盘空间时可以使用两个表,UCD-SNMP-MIB:dskTable 和 HOST-RESOURCES-MIB:hrStorageTable。这两个表之间有两个明显的区别:UCD-SNMP-MIB:dskTable 需要 snmpd.conf 中的配置指令,但它也可以直接测量可用空间的百分比
所以听起来您只需要使用 UCD-SNMP-MIB 而不是 HOST-RESOURCES-MIB 来获取 dskTable 而不是 hrStorageTable。