Контроль S.M.A.R.T дисков с помощью Icinga2
Оцениваем состояния жёсткого диска с помощью Icinga2 и мониторим выход из строя.
Осуществлять мониторинг будем при помощи NRPE демона, запущенного на сервере с Icinga2.
Установка NRPE
Для установки требуется epel-репозиторий. Выполняем его установку командой yum install epel-release
Установим сервис NRPE и необходимые модули.
1 | yum install nrpe nagios-plugins-nrpe |
Настройка NRPE
Вносим изменения в конфигурационный файл /etc/nagios/nrpe.cfg
клиента.
1 | ... |
Запустим сервис и добавим в автозагрузку:
1 | systemctl enable nrpe.service |
Загружаем модуль проверки S.M.A.R.T
Загрузим модуль с GitHub и поместим в директорию /usr/lib64/nagios/plugins/
1 | curl -O https://raw.githubusercontent.com/Napsty/check_smart/master/check_smart.pl |
Назначаем необходимые привилегии:
1 | chmod +x check_smart.pl |
Выполняем настройку модуля
В конфигурационном файле /etc/nagios/nrpe.cfg
вносим команду для проверки дисков с необходимым набором аргументов. Документация по работе с модулем.
Как пример, я использую следующую команду:
1 | /usr/lib64/nagios/plugins/check_smart.pl -d /dev/sda -i auto -b 2 |
В этом случае в конфигурационный файл добавляем строку:
1 | command[check_smart]=/usr/lib64/nagios/plugins/check_smart.pl -d $ARG1$ -i $ARG2$ -b $ARG3$ |
Либо для проверки всех дисков, используем следующее выражение:
1 | /usr/lib64/nagios/plugins/check_smart.pl -g "/dev/sd[a-z]" -i auto -b 2 |
И соответственно:
1 | command[check_smart]=/usr/lib64/nagios/plugins/check_smart.pl -g $ARG1$ -i $ARG2$ -b $ARG3$ |
Настройка Sudoers
Данный модуль требует root-привилегии для корректного запуска smartctl
.
Добавим на клиенте в /etc/sudoers
следующие строчки:
1 | nrpe ALL=(ALL) NOPASSWD: /usr/lib64/nagios/plugins/check_smart.pl |
И на сервере с Icinga2:
1 | Defaults:nrpe !requiretty |
Настройка Icinga2
Добавляем новый сервис check_smart
для проверки.
1 | apply Service "check_smart" { |
В конфигурационный файл хоста добавляем параметры для включения сервиса, а так же указываем значения аргументов:
1 | vars.nrpe = true |
Проверяем выполненные действия:
Troubleshooting
При появлении ошибки UNKNOWN: No health status line found
, проверьте установлен ли пакет smartmontools
.