Имеется в наличии система Proxmox 4.4, установленная на RAID1 ZFS. Нам нужно знать, что системой все в порядке и мы будем с определенной периодичностью с помощью Zabbix это проверять. Для начала необходимо установить сам агент:
apt-get install zabbix-agent
Также нужно иметь в виду, то Proxmox по умолчанию не имеет sudo и нужно его скачать чтобы мы могли запускать скрипты от пользователя zabbix
apt-get install sudo
Создадим скрипт проверки zfs_check.sh
mkdir /etc/scripts/ touch /etc/scripts/zfs_check.sh
Зададим владельца и права
chown zabbix. /etc/scripts/zfs_check.sh chmod 0755 /etc/scripts/zfs_check.sh
nano /etc/scripts/zfs_check.sh
Вставим в скрипт вот такой текст
#!/bin/bash /usr/bin/sudo /sbin/zpool status | grep DEGRADED | wc -l
Теперь отредактируем конфигурационный файл zabbix
nano /etc/zabbix/zabbix_agentd.conf
Server=xxx.xxx.xxx.xxx (адрес нашего Zabbix-сервера) ServerActive=xxx.xxx.xxx.xxx (адрес нашего Zabbix-сервера) ListenPort=10051 (по умолчанию порт, на котором работает агент - 10050) Hostname=nash_site (имя нашего хоста)
И в конце файла добавляем строку:
UserParameter=zpool.health,/etc/scripts/zfs_check.sh
Перезапускаем агента. В Proxmox это делается так:
service zabbix-agent restart
Далее, необходимо разрешить работать с zfs пользователю zabbix т.к. изначально это может делать только root.
Добавим в /etc/sudoers
Defaults:zabbix !requiretty zabbix ALL=(root) NOPASSWD: /sbin/zpool zabbix ALL=(root) NOPASSWD: /sbin/zfs zabbix ALL=(root) NOPASSWD: /sbin/zpool status
Запускаем наш скрипт. В случае, если RAID исправен скрипт нам возвращает ‘0’:
#sudo -u zabbix /etc/scripts/zfs_check.sh 0
root@pve:~# zpool status pool: rpool state: ONLINE scan: resilvered 21.7M in 0h0m with 0 errors on Sun Mar 5 17:04:49 2017 config: NAME STATE READ WRITE CKSUM rpool ONLINE 0 0 0 mirror-0 ONLINE 0 0 0 sda2 ONLINE 0 0 0 sdb2 ONLINE 0 0 0 errors: No known data errors
Имитируем отказ одного диска:
# zpool offline rpool sdb2
root@pve:~# zpool status pool: rpool state: DEGRADED status: One or more devices has been taken offline by the administrator. Sufficient replicas exist for the pool to continue functioning in a degraded state. action: Online the device using 'zpool online' or replace the device with 'zpool replace'. scan: resilvered 21.7M in 0h0m with 0 errors on Sun Mar 5 17:04:49 2017 config: NAME STATE READ WRITE CKSUM rpool DEGRADED 0 0 0 mirror-0 DEGRADED 0 0 0 sda2 ONLINE 0 0 0 sdb2 OFFLINE 0 0 0 errors: No known data errors
Опять запускаем скрипт:
#sudo -u zabbix /etc/scripts/zfs_check.sh 3
Итак, мы видим, что вместо ‘0’ теперь у нас ‘3’ т.к слово DEGRADED в результате выполнения скрипта встречается 3 раза.
Мы настроим триггер так, что если DEGRADED выводиться хоть раз, приходит оповещение.
Параллельно можно зайти на Zabbix-сервер и сверять данные, которые выдает скрипт с тем, что получает наш сервер Zabbix, запустив команду zabbix_get
Например:
zabbix_get -s nash_site -p 10051 -k zpool.health
Здесь мы проверяем ключ zpool.health на хосте nash_site и где агент работает на порту 10051
Уведомление:Настройка мониторинга состояния RAID ZFS в Zabbix на Proxmox — mini Wiki