Если у нас на сервере нет рейд контроллера и используется программный рейд, или нет возможности мониторить непосредственно сам райд контроллер, то можно использовать программные средства для обеспечения наблюдения за здоровьем жестких дисков.
И так, есть сервер с программным рейдом, и zabbix, в котором мы будем мониторить все изменения и проблемы.
Установим smartmontools для сбора информации о HDD
По-умолчанию SMART включён, однако если команда
ничего не выдаёт, то можно попробовать включить опцию SMART:
На сервере должен быть установлен клиент zabbix
Правим конфигурацию клиента, добавим строки:
UserParameter=smartctl.list,/usr/bin/sudo /usr/sbin/smartctl --scan | awk 'BEGIN { printf "{\"data\": ["; } { if (NR != 1) printf ","; printf "{\"{#SMART}\": \"%s\"}", $1; } END { printf "]}"; }'
UserParameter=smartctl.model[*],/usr/bin/sudo /usr/sbin/smartctl -i $1 | grep "Device Model" | sed -r 's/.* //g'
UserParameter=smartctl.serial[*],/usr/bin/sudo /usr/sbin/smartctl -i $1 | grep Number | sed -r 's/.* //g'
UserParameter=smartctl.health[*],/usr/bin/sudo /usr/sbin/smartctl -H $1 | /usr/bin/awk 'BEGIN { h = 0; } / (OK|PASSED)$/ { h = 1; } END { print h; }'
UserParameter=smartctl.reallocated[*],/usr/bin/sudo /usr/sbin/smartctl -A $1 | grep Reallocated_Event_Count | sed -r 's/.* //g'
UserParameter=smartctl.pending[*],/usr/bin/sudo /usr/sbin/smartctl -A $1 | grep Current_Pending_Sector | sed -r 's/.* //g'
UserParameter=smartctl.temperature[*],/usr/bin/sudo /usr/sbin/smartctl -A $1 | grep Temperature_Celsius | sed -r 's/.* //g
Перезапустим клиент
Теперь нам нужно разрешит пользователю zabbix выполнять команды smartmontools без запроса пароля root
И в конец допишем эти строки:
%zabbix ALL=(ALL) NOPASSWD:/usr/sbin/smartctl --scan
%zabbix ALL=(ALL) NOPASSWD:/usr/sbin/smartctl -i *
%zabbix ALL=(ALL) NOPASSWD:/usr/sbin/smartctl -H *
%zabbix ALL=(ALL) NOPASSWD:/usr/sbin/smartctl -A *
В zabbix добавляем вот этот шаблон:
https://onedayadmin.sytes.net/wp-content/uploads/zbx_smart_linux_templates.xml