Имеется в наличии система 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
Источник: https://admin812.ru/nastrojka-monitoringa-sostoyaniya-raid-zfs-v-zabbix.html
Was this helpful?
0 / 0