Hard diskurile moderne au un mecanism intern numit S.M.A.R.T. prin care este posibil să se știe când un hard disk este pe punctul de a eșua. Nu ar fi bine ca serverul să vă trimită un e-mail înainte de un astfel de eșec?
Prezentare generală
Programe precum „mdadm” (pentru gestionarea RAID software) și „Palimpsest Disk Utility” (utilizat pe Ubuntu LiveCD), folosesc informațiile S.M.A.R.T pentru a vă informa când discul este pe cale sau a eșuat. Cu toate acestea, pe un server fără cap (fără interfață grafică) nu există niciun serviciu care să vă informeze despre doomul în așteptare înainte de a fi prea târziu. Mai mult, cum ați ști despre asta fără să vă conectați manual la server?
Acest script, atunci când este rulat o dată pe zi cu cron, va avertiza dacă vreunul dintre sectoarele defecte ale sistemului de hard disk a atins o limită care este în mod deliberat mai mică decât pragul „discul este defect” și va trimite avertismentul către administratorul aparatului.
Cerințe preliminare și ipoteze
- Ați configurat deja asistență prin e-mail pentru server utilizând „ Cum se configurează alertele prin e-mail pe Linux " ghid.
- Folosiți un sistem bazat pe Debian.
- Nu folosiți un controler RAID * hardware.
- Mă veți vedea folosind VIM ca program de editare, asta doar pentru că sunt obișnuit ... puteți folosi orice alt editor pe care l-ați dori.
* Deoarece este foarte posibil ca controlerul RAID hardware să blocheze accesul sistemului la aceste informații.
Înființat
Instalați pachetul „smartmontools” care citește informațiile S.M.A.R.T de pe controlerul hard diskului și ni le prezintă.
sudo aptitude instalează smartmontools
Creați scriptul monitorului:
sudo vim /root/smart-monitor.sh
Conține acest conținut:
#! / Bin / Bash
######## Funcția de e-mail ########
email_admin_func()
{
ecou „To: [email protected]”> $ temp_email_file
ecou „From: [email protected]” >> $ temp_email_file
ecou "Subiect: Monitorul S.M.A.R.T Pragul a fost încălcat" >> $ temp_email_file
ecou "" >> $ temp_email_file
echo -e $ 1 >> $ temp_email_file
/ usr / sbin / ssmtp -t <$ temp_email_file
echo „A trimis un e-mail administratorului”
}
smartc_func()
{
/ usr / sbin / smartctl -A / dev / $ 1 | grep Reallocated_Sector_Ct | tr -s '' | cut -d '' -f11
}
######## Sfârșitul funcțiilor #########
######## Setați parametrul de lucru ########
temp_email_file = / tmp / smart_monitor.txt
allowed_threshold = 5 #setează numărul de sectoare defecte cu care ești dispus să trăiești, recomandat 5.
########Motor########
pentru i in sda sdb; faceți # Adăugați sau scădeți numele discurilor din această listă, după cum este potrivit pentru configurarea dvs.
dacă [[ "`smartc_func $i`" -ge $allowed_threshold ]]; atunci
ecou Trimitând prin e-mail administratorului
email_admin_func "Unul dintre HD-urile de pe" `hostname`", a atins limita superioară a pragului !!! nPragul a fost setat la: $ permise_threshold și starea discului $ i era: "` smartc_func $ i` ""
fi
Terminat
Punctele cheie de remarcat sunt:
- Funcția de e-mail - Setați informațiile corespunzătoare, cum ar fi numele mașinii și adresa de e-mail de administrator.
- Prag permis - Setați acest parametru la ceea ce credeți că este adecvat, am folosit 5 deoarece limita stabilită pentru hard disk-urile „de calitate server” pe care le-am folosit a fost 10. (Am găsit pragul pentru unitățile „de calitate consumator” la fi la fel de mare ca 140).
- Setați dispozitivele pe care doriți să le monitorizați ajustând enumerarea numelor de disc în bucla „pentru”. În prezent sunt incluse două discuri (sda & sdb), deci ajustați-le pentru configurare. Puteți include toate discurile sau doar unele, dacă trebuie să * excludeți un disc din anumite motive.
* în configurarea mea inițială, primul disc a fost o unitate flash, astfel încât citirea informațiilor sale, dacă este posibil, nu este de prea mare folos.
Faceți scriptul executabil:
sudo chmod + x /root/smart-monitor.sh
Configurarea este terminată.
Programați scriptul pentru a fi rulat automat
Vrem să facem scriptul să ruleze automat, așa că vom crea un nou job Cron pentru acesta.
După cum se menționează în „
Cum se configurează alertele prin e-mail pe Linux
”Ghidează rezultatul în acest sens, este că, dacă scriptul însuși întâlnește o eroare, cron ne va informa automat prin e-mail imediat ce se întâmplă.
Deschideți programul de job cron:
sudo crontab -e
Adăugați acest lucru la conținutul său:
0 7 * * * /root/smart-monitor.sh > /tmp/last_smart_monitor_run.log
Aceasta va seta scriptul să fie rulat în fiecare dimineață la ora 7:00.
Tot sectorul tău ne aparține :)