Nowoczesne dyski twarde mają wewnętrzny mechanizm o nazwie S.M.A.R.T. dzięki któremu można dowiedzieć się, kiedy dysk twardy ulegnie awarii. Czy nie byłoby miło, gdyby serwer wysłał Ci e-maila przed taką awarią?
Przegląd
Programy takie jak „mdadm” (do programowego zarządzania macierzą RAID) i „Palimpsest Disk Utility” (używane na Ubuntu LiveCD) wykorzystują informacje S.M.A.R.T, aby poinformować Cię, kiedy dysk jest bliski awarii lub gdy uległ awarii. Jednak na serwerze bezgłowym (bez GUI) nie ma usługi, która poinformuje Cię o nadchodzącej zagładzie, zanim będzie za późno. Co więcej, skąd byś o tym wiedział bez ręcznego logowania na serwer?
Ten skrypt, uruchamiany raz dziennie z cronem, będzie ostrzegał, jeśli liczba uszkodzonych sektorów na dysku twardym w systemie osiągnęła limit, który jest celowo niższy niż próg „dysk jest uszkodzony”, i wyśle e-mailem ostrzeżenie do administratora komputera.
Wymagania wstępne i założenia
- Masz już skonfigurowaną obsługę poczty e-mail dla serwera przy użyciu opcji „ Jak skonfigurować alerty e-mail w systemie Linux " przewodnik.
- Używasz systemu opartego na Debianie.
- Nie używasz * sprzętowego kontrolera RAID.
- Zobaczysz, jak używam VIM jako programu do edycji, tylko dlatego, że jestem do tego przyzwyczajony… możesz użyć dowolnego innego edytora, który ci się podoba.
* 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 je nam.
sudo aptitude zainstaluj smartmontools
Utwórz skrypt monitora:
sudo vim /root/smart-monitor.sh
Niech to będzie treść:
#! / Bin / Bash
######## Funkcja e-mail ########
email_admin_func ()
{
echo "To: [email protected]"> $ temp_email_file
echo "Od: [email protected]" >> $ plik_poczta_temp_email
echo "Temat: Monitor S.M.A.R.T. Naruszono próg" >> $ 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ść uszkodzonych sektorów, z którymi chcesz żyć, zalecane 5.
########Silnik########
dla i w sda sdb; do # Dodaj lub odejmij nazwy dysków z tej listy, stosownie do konfiguracji.
jeśli [[ "`smartc_func $i`" -ge $allowed_threshold ]]; następnie
echo Wysyłanie wiadomości e-mail do administratora
email_admin_func "Jeden z dysków twardych na" `hostname`" osiągnął górny próg !!! n Próg został ustawiony na: $ allowed_threshold, a stan dysku $ i to: "` smartc_func $ i` ""
być
gotowy
Najważniejsze punkty, na które należy zwrócić uwagę, to:
- Funkcja e-mail - ustaw odpowiednie informacje, takie jak nazwa urządzenia i adres e-mail administratora.
- Dozwolony próg - Ustaw ten parametr na taki, który uważasz za odpowiedni. Użyłem 5, ponieważ limit ustawiony dla dysków twardych „serwerowej”, których użyłem, wynosił 10. (znalazłem próg dla dysków „konsumenckich” być aż 140).
- Ustaw urządzenia, które chcesz monitorować, dostosowując wyliczanie nazw dysków w pętli „for”. Obecnie dostępne są dwa dyski (sda i sdb), więc dostosuj swoją konfigurację. Możesz dołączyć wszystkie swoje dyski lub tylko niektóre, jeśli z jakiegoś powodu musisz * wykluczyć dysk.
* w mojej pierwotnej konfiguracji pierwszym dyskiem był pendrive, więc czytanie jego informacji, jeśli to w ogóle możliwe, nie jest zbyt przydatne.
Spraw, aby skrypt był wykonywalny:
sudo chmod + x /root/smart-monitor.sh
Konfiguracja jest zakończona.
Zaplanuj automatyczne uruchamianie skryptu
Chcemy, aby skrypt działał automatycznie, więc utworzymy dla niego nowe zadanie Cron.
Jak stwierdzono w „
Jak skonfigurować alerty e-mail w systemie Linux
”Prowadzi do tego, że jeśli sam skrypt napotka błąd, cron automatycznie poinformuje nas o tym e-mailem, gdy tylko to nastąpi.
Otwórz program do planowania zadań cron:
sudo crontab -e
Dodaj to do jego zawartości:
0 7 * * * /root/smart-monitor.sh > /tmp/last_smart_monitor_run.log
Spowoduje to uruchomienie skryptu każdego ranka o godzinie 7:00.
Cały Twój sektor należy do nas :)