Główna » jak » Skrypt monitora dysku twardego dla bezgłowych serwerów Linux

    Skrypt monitora dysku twardego dla bezgłowych serwerów Linux

    Nowoczesne dyski twarde mają wewnętrzny mechanizm o nazwie S.M.A.R.T. dzięki czemu można dowiedzieć się, kiedy nastąpi awaria dysku twardego. Czy nie byłoby miło z serwera wysłać e-mail przed takim niepowodzeniem?

    Przegląd

    Programy takie jak "mdadm" (do zarządzania oprogramowaniem RAID) i "Palimpsest Disk Utility" (używane na Ubuntu LiveCD), wykorzystują informacje S.M.A.R.T, aby poinformować Cię, kiedy dysk się nie powiedzie. Jednak na bezgłowym serwerze (bez GUI) nie ma usługi, która poinformuje cię o oczekiwaniu na zagładę, zanim będzie za późno. Co więcej, jak można się o tym dowiedzieć bez ręcznego logowania do serwera?

    Ten skrypt, uruchamiany raz dziennie z cronem, będzie ostrzegał, jeśli którakolwiek z uszkodzonych sektorów dysku twardego systemu osiągnęła limit celowo niższy niż próg "dysku jest zła" i wysłał ostrzeżenie do administratora komputera.

    Wymagania wstępne i założenia

    • Już skonfigurowałeś obsługę poczty e-mail dla serwera za pomocą przewodnika "Jak skonfigurować ostrzeżenia e-mail w systemie Linux".
    • Używasz systemu opartego na Debianie.
    • Nie używasz * sprzętowego kontrolera RAID.
    • Zobaczysz, że używam VIM jako programu redaktora, tylko dlatego, że jestem do tego przyzwyczajony ... możesz użyć dowolnego edytora, który chciałbyś.

    * Ponieważ jest bardzo możliwe, że sprzętowy kontroler RAID blokuje dostęp systemu do tych informacji.

    Ustawiać

    Zainstaluj pakiet "smartmontools", który odczytuje informacje S.M.A.R.T z kontrolera dysku twardego i przedstawia go nam.

    sudo aptitude install smartmontools

    Utwórz skrypt monitora:

    sudo vim /root/smart-monitor.sh

    Upewnij się, że to treść:

    #! / bin / bash
    ######## Funkcja poczty elektronicznej ########
    email_admin_func ()

    echo "Do: [email protected]"> $ temp_email_file
    echo "From: [email protected]" >> $ temp_email_file
    echo "Subject: S.M.A.R.T monitor Monitor przekroczony" >> $ temp_email_file
    echo "" >> $ temp_email_file
    echo -e $ 1 >> $ temp_email_file
    / usr / sbin / ssmtp -t < $temp_email_file
    echo "Wysłano wiadomość e-mail do administratora"

    smartc_func ()

    / usr / sbin / smartctl -A / dev / $ 1 | grep Reallocated_Sector_Ct | tr -s "| cut -d" -f11

    ######## Koniec funkcji ########

    ######## Ustaw parametr roboczy ########
    temp_email_file = / tmp / smart_monitor.txt
    allowed_threshold = 5 # ustaw ilość złych sektorów, z którymi chcesz mieszkać, zalecane 5.

    ########Silnik########
    dla i in sda sdb; do # Dodaj lub odejmij nazwy dysków z tej listy, stosownie do ustawień.
    jeśli [["smartc_func $ i" "-ge $ allowed_threshold]]; następnie
    echo Wysłanie e-maila do administratora
    email_admin_func "Jedna z HD na" hostname "", osiągnęła górny limit progowy !!! n Próg został ustawiony na: $ allowed_threshold, a status dysku $ i: "'smartc_func $ i'" "
    fi
    Gotowe

    Kluczowe uwagi to:

    • Funkcja poczty e-mail - ustaw odpowiednie informacje, takie jak nazwa komputera i adres e-mail administratora.
    • Dozwolony próg - ustaw ten parametr na odpowiedni dla ciebie, użyłem 5, ponieważ limit ustawiony dla dysków twardych "serwerów klasy", których używałem, wynosił 10. (znalazłem próg dla napędów "klasy konsumenckiej" być aż 140).
    • Ustaw urządzenia, które chcesz monitorować, dostosowując wyliczanie nazw dysków w pętli "for". Obecnie są dołączone dwa dyski (sda i sdb), więc dostosuj ustawienia. Możesz dołączyć wszystkie dyski lub tylko niektóre, jeśli chcesz * wykluczyć dysk z jakiegoś powodu.

    * w mojej oryginalnej konfiguracji pierwszy dysk był dyskiem flash, więc czytanie jego informacji, jeśli w ogóle możliwe, nie jest zbyt użyteczne.

    Spraw, aby skrypt był wykonywalny:

    sudo chmod + x /root/smart-monitor.sh

    Konfiguracja została zakończona.

    Zaplanuj uruchomienie skryptu automatycznie

    Chcemy, aby skrypt działał automatycznie, dlatego utworzymy dla niego nowe zadanie Cron.
    Jak podano w "Jak skonfigurować powiadomienia e-mail w systemie Linux", poprowadź taki krok, jeśli sam skrypt napotka błąd, cron automatycznie poinformuje nas o tym e-mailem, gdy tylko się wydarzy..

    Otwórz program do planowania zadań cron:

    sudo crontab -e

    Dodaj to do treści:

    0 7 * * * /root/smart-monitor.sh> /tmp/last_smart_monitor_run.log

    Spowoduje to ustawienie skryptu uruchamianego codziennie o 7 rano.


    Cały twój sektor należy do nas :)