Назад | Перейти на главную страницу

Как контролировать ZFS с помощью SNMP во FreeBSD?

Я хотел бы отслеживать их с помощью 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 байт".