Moderní pevné disky mají vnitřní mechanismus zvaný S.M.A.R.T. díky nimž je možné zjistit, kdy dojde k selhání pevného disku. Nebylo by hezké, kdyby vám server zaslal e-mail před takovým selháním?
Přehled
Programy jako „mdadm“ (pro správu softwaru RAID) a „Palimpsest Disk Utility“ (používané na Ubuntu LiveCD), pomocí informací S.M.A.R.T vás informují, když se disk blíží nebo selhal. Na serveru bez hlavy (bez grafického uživatelského rozhraní) však neexistuje žádná služba, která vás bude informovat o čekajícím zkáze, než bude příliš pozdě. Jak byste o tom navíc věděli, aniž byste se museli ručně přihlašovat na server?
Tento skript, pokud je spuštěn jednou denně s cronem, upozorní, pokud některý z počtu chybných sektorů pevného disku systému dosáhl limitu, který je záměrně nižší než prahová hodnota „disk je špatný“, a pošle upozornění správci stroje.
Předpoklady a předpoklady
- E-mailovou podporu pro server jste již nastavili pomocí „ Jak nastavit e-mailová upozornění v systému Linux Průvodce.
- Používáte systém založený na Debianu.
- Nepoužíváte * hardwarový řadič RAID.
- Uvidíte, že používám VIM jako editorský program, je to jen proto, že jsem si zvykl ... můžete použít jakýkoli jiný editor, který chcete.
* Protože je velmi možné, že hardwarový řadič RAID blokuje přístup systému k těmto informacím.
Založit
Nainstalujte balíček „smartmontools“, který načte informace S.M.A.R.T z řadiče pevného disku a předá nám je.
sudo aptitude install smartmontools
Vytvořte skript monitoru:
sudo vim /root/smart-monitor.sh
Udělejte z toho obsah:
#! / Bin / Bash
######## Email funkce ########
email_admin_func ()
{
echo "Komu: [email protected]"> $ temp_email_file
echo "Od: [email protected]" >> $ temp_email_file
echo "Subject: S.M.A.R.T monitor Threshold vioched" >> $ temp_email_file
echo "" >> $ temp_email_file
echo -e $ 1 >> $ temp_email_file
/ usr / sbin / ssmtp -t <$ temp_email_file
echo "Odeslat e-mail správci"
}
smartc_func ()
{
/ usr / sbin / smartctl -A / dev / $ 1 | grep Reallocated_Sector_Ct | tr -s '' | cut -d '' -f11
}
######## Konec funkcí ########
######## Nastavte pracovní parametr ########
temp_email_file = / tmp / smart_monitor.txt
allow_threshold = 5 # nastavit množství špatných sektorů, se kterými jste ochotni žít, doporučeno 5.
########Motor########
pro i v sda sdb; do # Podle vašeho nastavení přidejte nebo odečtěte názvy disků z tohoto seznamu.
pokud [[ "`smartc_func $i`" -ge $allowed_threshold ]]; pak
echo Zaslání e-mailu správci
email_admin_func "Jeden z HD na" "názvu hostitele", dosáhl horní hranice limitu !!! nHranice byla nastavena na: $ allow_threshold a stav disku $ i byl: "" smartc_func $ i` ""
být
Hotovo
Klíčové body, které je třeba si uvědomit, jsou:
- Funkce e-mailu - Nastavte příslušné informace, jako je název zařízení a e-mail správce.
- Povolená prahová hodnota - Nastavte tento parametr na to, co považujete za vhodné, použil jsem 5, protože limit nastavený pro pevné disky „serverového stupně“, které jsem použil, bylo 10. (Zjistil jsem prahovou hodnotu pro „spotřebitelské“ disky na být až 140).
- Nastavte zařízení, která chcete monitorovat, úpravou výčtu názvů disků ve smyčce „pro“. Aktuálně jsou zahrnuty dva disky (sda a sdb), takže se přizpůsobte svému nastavení. Můžete zahrnout všechny své disky nebo jen některé, pokud potřebujete z nějakého důvodu * vyloučit disk.
* v mém původním nastavení byl první disk flash disk, takže čtení jeho informací, pokud je to možné, není příliš užitečné.
Nastavit skript jako spustitelný:
sudo chmod + x /root/smart-monitor.sh
Nastavení je hotovo.
Naplánujte automatické spuštění skriptu
Chceme, aby se skript spouštěl automaticky, takže pro něj vytvoříme novou úlohu Cron.
Jak je uvedeno v „
Jak nastavit e-mailová upozornění v systému Linux
„Průvodce výsledkem toho je, že pokud samotný skript narazí na chybu, bude nás cron automaticky informovat e-mailem, jakmile k tomu dojde.
Otevřete plánovač úloh cron:
sudo crontab -e
Přidejte toto do svého obsahu:
0 7 * * * /root/smart-monitor.sh > /tmp/last_smart_monitor_run.log
Tím nastavíte spuštění skriptu každé ráno v 7:00.
Celý váš sektor patří nám :)