Начална » как да » Скрипт за монитор на твърди дискове за беззболни сървъри на Linux

    Скрипт за монитор на твърди дискове за беззболни сървъри на 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 часа.


    Целият ви сектор принадлежи на нас :)