Домашня » як » Сценарій монітора жорсткого диска для безголосних серверів Linux

    Сценарій монітора жорсткого диска для безголосних серверів 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 / bash
    ######## Функція електронної пошти ########
    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 Reallocated_Sector_Ct | tr -s "| cut-d" -f11

    ######## Кінець функцій ########

    ######## Встановити робочий параметр ########
    temp_email_file = / tmp / smart_monitor.txt
    allowed_threshold = 5 # встановити кількість поганих секторів, з якими ви готові жити, рекомендовано 5.

    ######## Engine ########
    для i в sda sdb; do # Додайте або віднімайте назви дисків з цього списку відповідно до налаштувань.
    if [["'smartc_func $ i'" -ge $ allowed_threshold]]; потім
    echo Електронна адреса адміністратора
    email_admin_func "Один з HD на" 'hostname' ", досягла верхнього граничного значення! nПорогові значення було встановлено на: $ allowed_threshold, а статус диска $ i:" smartc_func $ i '""
    fi
    зроблено

    Ключові моменти, на які слід звернути увагу:

    • Функція електронної пошти - Встановіть відповідну інформацію, наприклад, назву машини та адресу адміністратора.
    • Дозволений поріг - Встановіть цей параметр на те, що ви вважаєте доречним, я використав 5, оскільки ліміт, встановлений для жорстких дисків, які використовуються на сервері, дорівнював 10. дорівнює 140).
    • Встановіть пристрої, які потрібно контролювати, налаштувавши перелік імен дисків у циклі «за». Наразі включено два диски (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 ранку.


    Весь ваш сектор належить нам :)