Скрипт за монитор на твърди дискове за беззболни сървъри на Linux
Модерните твърди дискове имат вътрешен механизъм, наречен S.M.A.R.T. чрез които е възможно да се знае кога твърд диск е на път да се провали. Няма ли да е хубаво на сървъра да ви изпрати имейл преди такъв неуспех?
Преглед
Програми като "mdadm" (за софтуерно управление на RAID) и "Palimpsest Disk Utility" (използвани в Ubuntu LiveCD), използват информацията на S.M.A.R.T, за да ви информират, когато дискът е на път да се провали. На сървъра без глава (без GUI) няма услуга, която да ви информира за предстоящата гибел, преди да е станало твърде късно. Освен това, как бихте знаели за него без ръчно влизане в сървъра?
Този скрипт, когато се стартира веднъж на ден с cron, ще предупреди, ако броят на лошите сектори на твърдите дискове на системата достигне лимит, който е умишлено по-нисък от прага "дискът е лош", и изпраща предупреждението до администратора на машината.
Предпоставки и предположения
- Вече сте настроили поддръжката на имейл за сървъра, като използвате ръководството „Как да конфигурирате сигналите за електронна поща в Linux“.
- Използвате Debian базирана система.
- Не използвате * хардуерен RAID контролер.
- Ще видите как използвам VIM като редакторска програма, това е само защото съм свикнал с него… можете да използвате всеки друг редактор, който искате.
* Защото е много възможно хардуерният RAID контролер да блокира достъпа на системата до тази информация.
Настройвам
Инсталирайте пакета "smartmontools", който чете информацията на S.M.A.R.T от контролера на твърдия диск и го представя на нас.
sudo aptitude инсталира smartmontools
Създайте скрипта на монитора:
sudo vim /root/smart-monitor.sh
Направете това съдържание:
#! / Хамбар / Баш
######## Функция за електронна поща ########
email_admin_func ()
echo "До: [email protected]"> $ temp_email_file
echo "От: [email protected]" >> $ temp_email_file
echo "Предмет: нарушен е прагът на монитора S.M.A.R.T" >> $ temp_email_file
echo "" >> $ temp_email_file
echo -e $ 1 >> $ temp_email_file
/ usr / sbin / ssmtp -t < $temp_email_file
ехо "Изпратено имейл до администратора"
smartc_func ()
/ usr / sbin / smartctl -A / dev / $ 1 | grep Преиздаден_сектор_Ct | tr -s "| cut-d" -f11
######## Край на функциите ########
######## Задаване на работен параметър ########
temp_email_file = / TMP / smart_monitor.txt
allowed_threshold = 5 #set количеството лоши сектори, с които желаете да живеете, препоръчва се 5.
######## ######## Engine
за i в sda sdb; do # Добавете или извадете имената на дискове от този списък, както е подходящо за вашата настройка.
if [["'smartc_func $ i'" -ge $ allowed_threshold]]; тогава
echo Изпращане на имейл до администратора
email_admin_func "Едно от HDs на" 'hostname' ", достигна горната граница !!! n Прагът е зададен на: $ allowed_threshold, а статусът на диска $ i:" smartc_func $ i '""
Fi
Свършен
Основните моменти, които трябва да се отбележат са:
- Функция Email - Задайте подходяща информация като име на устройството и имейл на администратора.
- Позволен праг - Задайте този параметър на това, което смятате за подходящо, използвал съм 5, тъй като ограничението, определено за използваните “сървърни” твърди дискове, е 10. (намерих прага за “потребителски клас”) стига до 140).
- Задайте устройствата, които искате да наблюдавате, като настроите изброяването на имената на дискове в цикъла “за”. Понастоящем са включени два диска (sda & sdb), така че настройте настройките си. Можете да включите всичките си дискове или само някои от тях, ако трябва да изключите диск по някаква причина.
* В първоначалната ми настройка първият диск беше флаш устройство, така че четенето на неговата информация, ако изобщо е възможно, не е от голяма полза.
Направете скрипта изпълнима:
sudo chmod + x /root/smart-monitor.sh
Настройката е завършена.
Планирайте скрипта да се стартира автоматично
Искаме да направим скрипта да се стартира автоматично, за да създадем нова Cron работа за него.
Както е посочено в „Как да настроите сигналите за електронна поща в Linux“, резултатът от това е, че ако самият скрипт срещне грешка, cron автоматично ще ни уведоми по имейл веднага щом се случи.
Отворете планировчика на задачите cron:
sudo crontab -е
Добавете това към съдържанието му:
0 7 * * * /root/smart-monitor.sh> /tmp/last_smart_monitor_run.log
Това ще постави сценария да се стартира всяка сутрин в 7 часа.
Целият ви сектор принадлежи на нас :)