Контроль S.M.A.R.T дисков с помощью Icinga2

Контроль S.M.A.R.T дисков с помощью Icinga2

Roman Bogachev VMware Specialist | Drone Pilot | Traveler

Оцениваем состояния жёсткого диска с помощью Icinga2 и мониторим выход из строя.

Осуществлять мониторинг будем при помощи NRPE демона, запущенного на сервере с Icinga2.

Установка NRPE

Для установки требуется epel-репозиторий. Выполняем его установку командой yum install epel-release

Установим сервис NRPE и необходимые модули.

1
yum install nrpe nagios-plugins-nrpe

Настройка NRPE

Вносим изменения в конфигурационный файл /etc/nagios/nrpe.cfg клиента.

1
2
3
4
...
allowed_hosts=127.0.0.1, ICINGA2_ADDRESS/32
dont_blame_nrpe=1
...

Запустим сервис и добавим в автозагрузку:

1
2
systemctl enable nrpe.service
systemctl start 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
2
nrpe  ALL=(ALL) NOPASSWD: /usr/lib64/nagios/plugins/check_smart.pl
nrpe ALL=(ALL) NOPASSWD: /usr/sbin/smartctl

И на сервере с Icinga2:

1
2
Defaults:nrpe !requiretty
Defaults:%nrpe !requiretty

Настройка Icinga2

Добавляем новый сервис check_smart для проверки.

1
2
3
4
5
6
7
apply Service "check_smart" {
import "my-service"
display_name = "Check disk S.M.A.R.T"
check_command = "nrpe"
command_endpoint = host.vars.client_endpoint
assign where host.vars.nrpe == true
}

В конфигурационный файл хоста добавляем параметры для включения сервиса, а так же указываем значения аргументов:

1
2
3
vars.nrpe = true
vars.nrpe_command = "check_smart"
vars.nrpe_arguments = [ "/dev/sda", "auto", "2"]

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

Troubleshooting

При появлении ошибки UNKNOWN: No health status line found, проверьте установлен ли пакет smartmontools.

On this page