If-Koubou

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

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

Nowoczesne dyski twarde mają wewnętrzny mechanizm o nazwie S.M.A.R.T. dzięki któremu można dowiedzieć się, kiedy nastąpi awaria dysku twardego. Czy nie byłoby miło z serwera, aby 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ę o tym, 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żesz się o tym dowiedzieć bez ręcznego logowania do serwera?

Ten skrypt, uruchamiany raz dziennie z cronem, będzie sygnalizował, czy którykolwiek z sektorów uszkodzonych sektorów dysku twardego osiągnął limit celowo niższy niż próg "dysku jest zły" 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 chcesz.

* 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: Monitor S.M.A.R.T Przekroczony 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ść 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", których używałem, wynosił 10. (znalazłem próg dla napędów "konsumenckich" na 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 * wyłączyć 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 wspomniano w "Jak skonfigurować powiadomienia e-mail w systemie Linux", należy kierować się tym, że jeśli sam skrypt napotka błąd, cron automatycznie poinformuje nas pocztą elektroniczną, jak tylko się to stanie.

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