如何在FreeBSD中用SNMP监视ZFS?

我想用SNMP监视这些:

zpool iostat -v 1 

每个驱动器和总和。

 zpool status 

洗涤为1而不是洗涤为0。

 zpool status -x 

监控$? (返回值)。 当值不是0时发送陷阱。

 zfs list 

已用和可用空间。

什么样的脚本是需要的?

假设你正在使用net-snmpd,你可能需要为每个值写一个脚本。 然后,使用snmpd.conf手册页中描述的技术,“扩展代理function”部分,将这些脚本的引用添加到您的snmpd.conf中。

例如, /root/bin/myzstatus

 #!/bin/sh /sbin/zpool status -x $1 

并在snmpd.conf中:

 extend status /root/bin/myzstatus tank 

有了zfs / zpool,大家都很幸运,因为大部分子命令都有机器输出的选项,这样可以更容易理解。

我不知道zpool status,scrub等的答案,但是对于空间我想了一些东西。

在/etc/snmpd.config中,我find了这个,并取消了注释,现在我有存储值:

 # # Host resources module # This requires the mibII module. # begemotSnmpdModulePath."hostres" = "/usr/lib/snmp_hostres.so" 

这里有一些输出:

 # snmpwalk -v1 -c public $freebsdzfsmachine | grep -E "Storage.*\.22 " | less HOST-RESOURCES-MIB::hrStorageIndex.22 = INTEGER: 22 HOST-RESOURCES-MIB::hrStorageType.22 = OID: HOST-RESOURCES-TYPES::hrFSOther HOST-RESOURCES-MIB::hrStorageDescr.22 = STRING: /tank, type: zfs, dev: tank HOST-RESOURCES-MIB::hrStorageAllocationUnits.22 = INTEGER: 512 Bytes HOST-RESOURCES-MIB::hrStorageSize.22 = INTEGER: 2147483647 HOST-RESOURCES-MIB::hrStorageUsed.22 = INTEGER: 1030063349 HOST-RESOURCES-MIB::hrStorageAllocationFailures.22 = Counter32: 0 HOST-RESOURCES-MIB::hrFSStorageIndex.22 = INTEGER: 24 

不幸的是,Size输出(1024 GiB)是错误的。 根据df的存储大小是20 TiB,使用的是491 GiB,但由于某种原因,这里的大小恰好恰好是2 ^ 31-1 * 512字节。 (其中2 ^ 31-1是有符号的32位整数的最大值)。 使用是正确的:1030063349 * 512/1024/1024/1024 = 491。

幸运的是,对于我的80 GB根磁盘,它工作正常。 我想在FreeBSD上限制为1个TiB。 在Linux NFS客户端上使用SNMP看到的相同挂载显示正确的值,hrStorageAllocationUnits为“INTEGER:32768字节”