Передовые виртуальные и выделенные серверы для проектов любой сложности и структуры.
 Подписывайтесь на Telegram канал!

ZFS мониторинг файловой системы с помощью системы Zabbix. Контроль состояния происходит с учетом значения DEGRADED появляющегося в выводе статуса ZFS при ошибках с дисками. Своевременно полученная информация может избавить от серьезных проблем.

Введение

Не представляю как можно спокойно жить системному администратору без тотального контроля файловых систем. Например, для меня чем больше механизмов меня оповестят о проблемах дисков тем лучше. К сожалению жесткий диск может выйти из строя в любой момент и это не зависит от того дорогой он или дешевый.

В этой статье вы узнаете как с помощью системы Zabbix можно держать под контролем все имеющие диски в файловой системе ZFS.

Более подробно про систему ZFS можно узнать на сайте разработчика.

ZFS мониторинг общий принцип

Схема действий для мониторинга параметра будет следующей:

  • Создаем скрипт bach который будет записывать нужное значение в текстовый файл;
  • Добавляем в cron задание которое будет с нужной нам периодичностью записывать показания в текстовый файл;
  • Добавляем необходимые параметры в агент Zabbix и проверяем правильность работы;
  • На сервере Zabbix для нужного узла добавляем все необходимые данные для контроля над параметром и настраиваем оповещение в случае плохих параметров.

Действия на Zabbix агенте

Команда для вывода нужных параметров ZFS

Выведем состояние zfs:

zpool status
= вывод команды =
pool: rpool
state: ONLINE
scan: none requested
config:

NAME STATE READ WRITE CKSUM
rpool ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
ata-ST3120811AS_5PT00YS1-part3 ONLINE 0 0 0
ata-ST3120811AS_5PT00DRP-part3 ONLINE 0 0 0

errors: No known data errors

Из вывода видно что имеются 2 диска сделанные в зеркале.

ZFS мониторинг будет основываться на появлении сообщения DEGRADED. Выполним команду которая проверит наличие этого сообщение:

/sbin/zpool status | grep DEGRADED | wc -l
= вывод команды =
0

При отсутствии значения DEGRADED выводится сообщение 0. При наличии значения выведется число соответствующее количеству встречающихся значений.

Отключим диск и подождав немного запросим статус ZFS:

zpool status
= вывод команды =
pool: rpool
state: DEGRADED
status: One or more devices has been removed 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: none requested
config:

NAME STATE READ WRITE CKSUM
rpool DEGRADED 0 0 0
mirror-0 DEGRADED 0 0 0
ata-ST3120811AS_5PT00YS1-part3 REMOVED 0 0 0
ata-ST3120811AS_5PT00DRP-part3 ONLINE 0 0 0

errors: No known data errors

Видим что у одного из дисков появилось значение REMOVED и параметр DEGRADED встречается 3 раза.

Проверим правильность выполняемой команды:

/sbin/zpool status | grep DEGRADED | wc -l
= вывод команды =
3

Всё правильно.

Создадим папку и в ней скрипт bash который будем запускать в cron для записи значения в текстовый файл.

mkdir /etc/zabbix/scripts

vim /etc/zabbix/scripts/zfs_degraded-bin.sh
= необходимый код =
#!/bin/bash
/sbin/zpool status | grep DEGRADED | wc -l > /etc/zabbix/scripts/zfs_degraded.txt

Сделаем скрипт исполнительным:

chmod +x /etc/zabbix/scripts/zfs_degraded-bin.sh

Произведем проверки. Запустим скрит, проверим создание текстового файла и информацию в нём. Выполнив по очереди 3 команды:

sh /etc/zabbix/scripts/zfs_degraded-bin.sh
= вывод пустой =

ls /etc/zabbix/scripts
= вывод команды =
zfs_degraded-bin.sh zfs_degraded.txt

cat /etc/zabbix/scripts/zfs_degraded.txt
= вывод команды =
3

Все работает как надо. Добавим задание в крон:

vim /etc/crontab
= необходимый код =
*/3 * * * * root /etc/zabbix/scripts/zfs_degraded-bin.sh >/dev/null 2>&1

Каждые 3 минуты в текстом фале будет обновляться информация.

Добавление параметров для Zabbix агента

Для того чтобы Zabbix агент мог работать с нашими параметрами необходимо добавить в файл настройки необходимый параметр.

vim /etc/zabbix/zabbix_agentd.conf
= необходимый параметр =
UnsafeUserParameters=1

После необходимого параметра добавляем нужный код. В моем случае получился следующий код:

UserParameter=pve-1.zfs,cat /etc/zabbix/scripts/zfs_degraded.txt

Параметры имеют следующие значения:

  • UserParameter — параметр согласно которого агент понимает что с ним надо работать;
  • pve-1.zfs — название параметра который мы будем использовать при добавлении элемента данных;
  • cat /etc/zabbix/scripts/zfs_degraded.txt — команда и путь по которому брать данные.

Перезапускаем агент Zabbix и проверяем правильность получения параметра агентом:

systemctl restart zabbix-agent

zabbix_get -s 127.0.0.1 -k pve-1.zfs
= вывод команды =
3

В случае получения ошибок

zpool clear rpool-bash: zabbix_get: command not found 
или
zabbix_get [20065]: Check access restrictions in Zabbix agent configuration

перейдите по ссылке и узнаете почему не работает zabbix_get.

Действия на сервере Zabbix

Добавление элемента данных

Открываем необходимый узел и перейдя в «Элементы данных» добавляем новый нажав «Создать элемент данных«.

Необходимо заполнить следующие поля:

  • Имя — pve-1 degraded zfs;
  • Ключ — pve-1.zfs;
  • Тип информации — Числовой (целое положительное);
  • Интервал обновления — 5m;
  • Период хранения истории — 1w;
  • Группы элементов данных — Filesystem.

ZFS мониторинг Элемент данных Zabbix

Добаление тригера

Открываем необходимый узел и перейдя в «Триггеры» добавляем новый нажав «Создать триггер«.

Необходимо заполнить следующие поля:

  • Имя триггера — pve-1 degraded zfs;
  • Выражение — {pve-1:pve-1.zfs.last()}>0.

ZFS мониторинг Триггер Zabbix

Ждем немного времени и проверяем срабатывание триггера. В случае успешного срабатывания выключаем систему, подключаем диск назад и запускаем систему.

Cброс счетчиков ошибок ZFS

После того как мы подключили в диск в выводе статуса ZFS будет информация об ошибках. Например, в нашем случае мы знаем чем вызваны эти ошибки и разбираться в их причине не требуется.

Сбросить все ошибки в пуле мы можем следующей командой:

 zpool clear rpool

Заключение

Возможно есть и другие варианты и подходы для мониторинга файловой системы ZFS и если вы знаете о них поделитесь информацией в комментариях.

Понравилась статья? Поделитесь ей с друзьями!
Пожалуйста, оставляйте свои комментарии

Читая их я получаю информацию которая позволяет мне улучшить качество написания статей. Кроме того, оставляя комментарии вы помогаете сайту получить более высокий рейтинг у поисковых систем. Давайте общаться.

6 комментариев для статьи “ZFS мониторинг в Zabbix

    1. Путей много и реализация часто зависит от уровня знаний. Можно наверно и агентом, но мне было привычней сделать так как описано в статье.

  1. Добрый.

    Если надо просто мониторить ZFS с отсылкой алертов на почту, то подойдет пакет zfs-zed — pve.proxmox.com/wiki/ZFS_on_Linux
    Достаточно корректно настроить postfix на PVE. И для проверки принудительно изъять диск из пула — zpool offline -f имя-пула имя-диска. На почту прийдет алерт. Вернуть диск — zpool online имя-пула имя-диска; zpool clear

    Зы. Не уверен, что zfs-zed умеет алертить о заполненности пула (( Ну, или я пока не разобрался.

  2. Добрый

    В догонку. Если надо из коробки мониторить zfs (и не только — SMART, логи etc.) с отсылкой алертов на почту — techblog.jeppson.org/2019/08/using-proxmox-as-a-nas/

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *