Я хотел бы отслеживать их с помощью SNMP:
zpool iostat -v 1
На драйв и сумму.
zpool status
Чистка как 1, а не чистка как 0.
zpool status -x
Монитор $?
(возвращаемое значение). Отправить прерывание, если значение не равно 0.
zfs list
Используемое и свободное место.
Какие нужны скрипты?
Предполагая, что вы используете net-snmpd, вам, вероятно, потребуется написать сценарий для каждого значения. Затем, используя методы, описанные на странице руководства snmpd.conf, раздел «Расширение функциональности агента», добавьте ссылки на эти сценарии в файл 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 я нашел это и раскомментировал, и теперь у меня есть значения хранения:
#
# 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
К сожалению, выходной размер (1024 ГиБ) неверен. Размер хранилища в соответствии с df составляет 20 ТиБ, а используемый - 491 ГиБ, но по какой-то причине размер здесь случайно равен 2 ^ 31-1 * 512 байтов. (где 2 ^ 31-1 - максимальное значение 32-битного целого числа со знаком). Однако используется правильно: 1030063349 * 512/1024/1024/1024 = 491.
К счастью, он отлично работает с моим корневым диском объемом 80 ГБ. Я предполагаю, что на FreeBSD он ограничен 1 ТиБ. Это же монтирование, наблюдаемое при использовании SNMP на клиенте Linux NFS, показывает правильное значение, а hrStorageAllocationUnits - "INTEGER: 32768 байт".