Prehľad
Programy, ako je "mdadm" (pre správu softvérových RAID) a "Palimpsest Disk Utility" (používané na disku Ubuntu LiveCD), používajú informácie S.M.A.R.T aby vás informovali, keď sa disk chystá alebo sa zlyhal. Avšak na serveri bez hlavy (bez grafického rozhrania) neexistuje žiadna služba, ktorá by vás informovala o nevyriešenej záhube skôr, než bude príliš neskoro. Navyše, ako by ste o tom vedeli bez ručného prihlásenia na server?
Tento skript, keď sa spustí raz denne s cronom, upozorní, či niektorý z chybných sektorov pevných diskov v systéme dosiahne limit, ktorý je zámerne nižší ako prahová hodnota disku je zlá, a upozorní správcu zariadenia na e-mail.
Predpoklady a predpoklady
- E-mailovú podporu pre server už nastavili pomocou príručky "Ako nainštalovať e-mailové upozornenia na Linux".
- Používate systém založený na Debiane.
- Nepoužívate * hardvérový RAID radič.
- Uvidíte, že používam program VIM ako editor, práve preto, že som na to zvyknutý … môžete použiť iný editor, ktorý by ste chceli.
* Pretože je veľmi pravdepodobné, že hardvér RAID blokuje prístup systému k týmto informáciám.
Nastaviť
Nainštalujte balík "smartmontools", ktorý prečíta informácie zo servera pevného disku o údajoch S.M.A.R.T a ukáže nám to.
sudo aptitude install smartmontools
Vytvorte skript monitora:
sudo vim /root/smart-monitor.sh
Urobte to obsahom:
#!/bin/bash ########Email function######## email_admin_func() { echo 'To: [email protected]' > $temp_email_file echo 'From: [email protected]' >> $temp_email_file echo 'Subject: S.M.A.R.T monitor Threshold breached' >> $temp_email_file echo '' >> $temp_email_file echo -e $1 >> $temp_email_file /usr/sbin/ssmtp -t < $temp_email_file echo 'Sent an Email to the Admin' }
smartc_func() { /usr/sbin/smartctl -A /dev/$1 | grep Reallocated_Sector_Ct |tr -s ' '|cut -d' ' -f11 }
########End of Functions########
########Set working parameter######## temp_email_file=/tmp/smart_monitor.txt allowed_threshold=5 #set the amount of bad sectors your willing to live with, recommended 5.
########Engine######## for i in sda sdb; do # Add or subtract disk names from this list as appropriate for your setup. if [ '`smartc_func $i`' -ge $allowed_threshold ]; then echo Emailing the Administrator email_admin_func 'One of the HDs on '`hostname`', has reached the upper threshold limit!!! nThe threshold was set to:$allowed_threshold and the $i disk status was: '`smartc_func $i`'' fi done
Kľúčové body, ktoré treba poznamenať, sú:
- Funkcia e-mailu - nastavte príslušné informácie, ako je názov počítača a e-mail administrátora.
- Povolená prahová hodnota - nastavte tento parameter na to, čo považujete za vhodné. Použil som 5, pretože limit nastavený pre hardvér typu "server grade", ktorý som použil, bol 10. (našiel som prah pre disky "consumer grade" byť až 140).
- Nastavte zariadenia, ktoré chcete monitorovať, úpravou výčtu názvov diskov v slučke "pre". V súčasnosti sú zahrnuté dva disky (sda & sdb), preto upravte nastavenie. Môžete zahrnúť všetky disky alebo len niektoré, ak potrebujete * z nejakého dôvodu vylúčiť disk.
* v mojom pôvodnom nastavení bol prvý disk flash disk, takže čítanie jeho informácií, ak vôbec nie je veľa využitia.
Vytvorte spustiteľný skript:
sudo chmod +x /root/smart-monitor.sh
Nastavenie je hotové.
Naplánujte skript, ktorý sa má spúšťať automaticky
Chceme, aby sa skript spustil automaticky, aby sme vytvorili novú prácu Cron. Ako je uvedené v návode "Ako nastaviť e-mailové upozornenia v systéme Linux", je výsledkom toho, že ak skript sám narazí na chybu, cron nás automaticky oznámi e-mailom hneď, ako k tomu dôjde.
Otvorte plánovač úloh cron:
sudo crontab -e
Pridajte toto do svojho obsahu:
0 7 * * * /root/smart-monitor.sh > /tmp/last_smart_monitor_run.log
Týmto nastavíte, aby bol skript spustený každé ráno o 7:00.
Všetok váš sektor patrí nám:)