Современные жесткие диски имеют внутренний механизм, называемый 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 / Bash
######## Функция электронной почты ########
email_admin_func ()
{
echo "To: [email protected]"> $ temp_email_file
echo "From: [email protected]" >> $ temp_email_file
echo "Тема: Превышен порог монитора S.M.A.R.T" >> $ temp_email_file
echo "" >> $ temp_email_file
эхо -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
allowed_threshold = 5 # установите количество сбойных секторов, с которыми вы готовы жить, рекомендуется 5.
######## Двигатель ########
для i в sda sdb; do # Добавьте или вычтите имена дисков из этого списка в зависимости от вашей установки.
если [[ "`smartc_func $i`" -ge $allowed_threshold ]]; тогда
echo Отправка письма администратору
email_admin_func "Один из жестких дисков на" `hostname`" достиг верхнего порогового значения !!! nПороговое значение было установлено на $ allowed_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 * * * /роот/смарт-монитор.ш > /тмп/ласт_смарт_монитор_рун.лог
Это заставит скрипт запускаться каждое утро в 7 утра.
Весь ваш сектор принадлежит нам :)