Скрипт монитора жесткого диска для безголовых серверов Linux
Современные жесткие диски имеют внутренний механизм, который называется S.M.A.R.T. с помощью которого можно узнать, когда жесткий диск выйдет из строя. Разве не было бы хорошо, если бы сервер отправил вам электронное письмо до такой ошибки?
обзор
Такие программы, как «mdadm» (для управления программным RAID) и «Palimpsest Disk Utility» (используется на Ubuntu LiveCD), используют информацию S.M.A.R.T, чтобы сообщить вам, когда диск собирается или выходит из строя. Однако на автономном сервере (без графического интерфейса пользователя) нет службы, которая будет информировать вас о предстоящей гибели, пока не станет слишком поздно. Более того, как бы вы узнали об этом, не входя на сервер вручную?
Этот сценарий, запускаемый один раз в день с помощью cron, сообщит, достигло ли какое-либо количество поврежденных секторов жесткого диска системы предела, который намеренно ниже порогового значения «диск неисправен», и отправит предупреждение администратору машины по электронной почте..
Предпосылки и предположения
- Вы уже настроили поддержку электронной почты для сервера с помощью руководства «Как настроить почтовые оповещения в Linux».
- Вы используете систему на основе Debian.
- Вы не используете * аппаратный RAID-контроллер.
- Вы увидите, что я использую VIM в качестве программы-редактора, просто потому, что я к этому привык… вы можете использовать любой другой редактор, который вам нравится.
* Поскольку вполне возможно, что аппаратный контроллер RAID блокирует доступ системы к этой информации.
Настроить
Установите пакет «smartmontools», который считывает информацию с S.M.A.R.T с контроллера жесткого диска и представляет ее нам..
sudo aptitude устанавливает smartmontools
Создайте скрипт монитора:
sudo vim /root/smart-monitor.sh
Сделайте это контентом:
#! / Bin / Баш
######## Функция электронной почты ########
email_admin_func ()
echo "To: [email protected]"> $ temp_email_file
echo "From: [email protected]" >> $ temp_email_file
echo "Subject: S.M.A.R.T monitor Порог нарушен" >> $ temp_email_file
echo "" >> $ temp_email_file
echo -e $ 1 >> $ temp_email_file
/ usr / sbin / ssmtp -t < $temp_email_file
echo "Отправлено письмо администратору"
smartc_func ()
/ usr / sbin / smartctl -A / dev / $ 1 | grep Reallocated_Sector_Ct | tr -s "| cut -d" -f11
######## Конец функций ########
######## Установить рабочий параметр ########
temp_email_file = / TMP / smart_monitor.txt
allow_threshold = 5 # установите количество плохих секторов, с которыми вы готовы жить, рекомендуется 5.
######## ######## двигателя
ибо я в SDA SDB; сделать # Добавить или вычесть имена дисков из этого списка в соответствии с вашими настройками.
if [["'smartc_func $ i'" -ge $ enabled_threshold]]; затем
эхо по электронной почте администратору
email_admin_func "Один из жестких дисков на" имени хоста "достиг верхнего порогового значения !!! nПорог был установлен на: $ allow_threshold и состояние диска $ i было:" 'smartc_func $ i' ""
фи
сделанный
Ключевые моменты, на которые следует обратить внимание:
- Функция электронной почты - установите соответствующую информацию, такую как имя машины и адрес электронной почты администратора.
- Разрешенный порог - установите для этого параметра то, что, по вашему мнению, является подходящим, я использовал 5, поскольку предел, установленный для жестких дисков «серверного уровня», который я использовал, был 10. (Я нашел пороговое значение для дисков «потребительского уровня», чтобы быть выше 140).
- Настройте устройства, которые вы хотите отслеживать, изменив перечисление имен дисков в цикле «for». В настоящее время включены два диска (sda & sdb), так что настройте их под свои настройки. Вы можете включить все свои диски или только некоторые, если вам нужно * исключить диск по какой-либо причине.
* в моей первоначальной настройке первый диск был флэш-накопителем, поэтому чтение его информации, если это вообще возможно, бесполезно.
Сделайте скрипт исполняемым:
sudo chmod + x /root/smart-monitor.sh
Настройка завершена.
Запланируйте запуск сценария автоматически
Мы хотим, чтобы скрипт запускался автоматически, поэтому мы создадим для него новое задание Cron..
Как указано в руководстве «Как настроить почтовые оповещения в Linux», результатом этого является то, что если сам скрипт обнаружит ошибку, cron автоматически сообщит нам по электронной почте, как только это произойдет..
Откройте планировщик заданий cron:
sudo crontab -e
Добавьте это к его содержанию:
0 7 * * * /root/smart-monitor.sh> /tmp/last_smart_monitor_run.log
Это установит скрипт для запуска каждое утро в 7 утра.
Все ваши отрасли принадлежат нам :)