Мониторинг программного рейда mdadm в zabbix
Мне довольно часто приходится работать с программным рейдом в linux — mdadm. Это эффективное бюджетное решение для обеспечения отказоустойчивости дисковой подсистемы сервера. Чтобы оперативно реагировать на проблемы с рейдом, необходимо получать информацию о его состоянии. С помощью системы мониторинга Zabbix очень легко настроить мониторинг mdadm.
Содержание:
- 1 Введение
- 2 Настройка агента для мониторинга mdadm
- 3 Настройка на сервере Zabbix
- 4 Заключение
- 5 Дополнительные материалы по Zabbix
Введение
У нас имеется любой сервер Linux с настроенным рейдом mdadm. Я специально не останавливаюсь на каком-то конкретном дистрибутиве, потому что этот рецепт универсален и будет актуален в любом дистрибутиве. Узнать состояние рейда можно командой в консоли:
# cat /proc/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid6 sdg1[6] sde1[3] sdd1[2] sdf1[4] sdc1[7] sdb1[0]
11720534016 blocks super 1.2 level 6, 512k chunk, algorithm 2 [6/6] [UUUUUU]
Заглавные буквы U означают, что все жесткие диски на месте, с рейдом все в порядке. Если какой-то из них выйдет из строя, то вместо буквы будет стоять знак _ . По этому значению мы и будем определять статус рейд массива mdadm — если знака _ нет, то все в порядке.
Воспользуемся простой командой для определения символа _ в выводе mdstat:
# egrep -c "[.*_.*]" /proc/mdstat
Если символа _ нет, то на выходе получаем значение 0. Если же это значение больше 1, то рейд считается поврежденным, zabbix отправляет уведомление. Отправлять полученные значения на сервер мониторинга будем с помощью UserParameter.
Если у вас еще нет своего сервера для мониторинга, то рекомендую материалы на эту тему. Для тех, кто предпочитает систему CentOS:
- Установка CentOS 7.
- Настройка CentOS 7.
- Установка и настройка zabbix сервера.
То же самое на Debian 9, если предпочитаете его:
- Установка Debian 9.
- Базовая настройка Debian 9.
- Установка и настройка zabbix на debian.
Настройка агента для мониторинга mdadm
Идем на сервер с настроенным mdadm, который будем мониторить и добавляем в файл конфигурации агента zabbix новый параметр:
# mcedit /etc/zabbix/zabbix_agentd.conf
UserParameter=mdadm.status,egrep -c "[.*_.*]" /proc/mdstat
Перезапускаем агент той командой, которая актуальна для вашей системы. Скорее всего сгодится такая:
# service zabbix-agent restart
Проверим работу этого параметра:
# zabbix_agentd -t mdadm.status
mdadm.status [t|0]
Все в порядке. Рейд в нормальном состоянии, команда возвращает параметр 0. Для проверки правильности регулярного выражения можно направить вывод /proc/mdstat в текстовый файл, изменить там значение U на _ и прогнать egrep по этому файлу. Должно на выходе быть значение 1 или более, в зависимости от того, сколько вы подчеркиваний добавите. Например вот так:
# cat /proc/mdstat > /root/mdstat
# mcedit /root/mdstat
Заменяем U на _ .
# cat /root/mdstat
Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10]
md0 : active raid6 sdg1[6] sde1[3] sdd1[2] sdf1[4] sdc1[7] sdb1[0]
11720534016 blocks super 1.2 level 6, 512k chunk, algorithm 2 [6/6] [UUU_UU]
# egrep -c "[.*_.*]" /root/mdstat
1
Все верно, команда отрабатывает правильно, значит мониторинг будет корректно работать.
Настройка на сервере Zabbix
Теперь идем на сервер мониторинга и настраиваем на нем все, что необходимо для мониторинга mdadm. Нам нужно будет создать шаблон, в нем один item и один trigger. Создаем шаблон: Configuration -> Templates -> Create template.
Пишем название, добавляем в группу и сохраняем. Открываем созданный шаблон, переходим в Items и создаем новый.
Заполняем параметры как у меня и жмем add.
Я установил интервал обновления этого параметра в 3600 секунд, то есть раз в час. Не вижу смысла проверять его чаще. В этом нет практической пользы.
Теперь добавим триггер, который будет срабатывать, если с рейдом проблемы. Переходим на список триггеров, жмем Create trigger и заполняем значения.
Добавляем триггер. На этом настройка шаблона закончена. Можно назначить шаблон всем хостам, на которых мы добавили UserParameter и ждать, когда в Last Data появятся первые значения. Я на момент отладки на всякий случай поставил сбор данных каждые 60 секунд. Когда убедился, что все работает, изменил это значение обратно на 3600.
Заключение
Вот так легко и просто настроить необходимый мониторинг в Zabbix. Пользовательские параметры предоставляют широкие возможности по настройке. Можно мониторить все, что угодно. Даже в данном случае можно придумать целую кучу всевозможных команд, с помощью которых можно собирать данные по mdadm. Можно сохранять не только состояние рейда, но и подробную информацию о нем. Для этого нужно просто полный вывод сделать и передавать его на сервер.
- Обновление Zabbix 2.4 до 3.0
- Установка Zabbix 3 на nginx + php-fpm
- Мониторинг значений из текстового файла в Zabbix
- Мониторинг размера бэкапа в Zabbix
- Установка и настройка zabbix прокси на CentOS 7
- Обновление Zabbix 3.0 до 3.2
- Мониторинг лог файла в Zabbix
- Мониторинг срока действия ssl сертификата в zabbix
- Обновление Zabbix 3.2 до 3.4
- Настройка мониторинга SMART жесткого диска в zabbix