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 :)