„Hard Drive Monitor“ scenarijus „Headless Linux“ serveriams
Šiuolaikiniai kietieji diskai turi vidinį mechanizmą, vadinamą S.M.A.R.T. per kurį galima žinoti, kada kietasis diskas bus sugedęs. Ar ne būtų malonu, kad serveris išsiųstų el. Laišką prieš tokį gedimą?
Apžvalga
Tokios programos kaip „mdadm“ (programinės įrangos RAID valdymas) ir „Palimpsest Disk Utility“ (naudojamos „Ubuntu LiveCD“), naudodamos S.M.A.R.T informaciją, kad informuotų jus, kai diskas yra ar nepavyko. Tačiau be serverio (be GUI) nėra jokios paslaugos, kuri informuotų jus apie laukiančią bausmę, kol nebus per vėlu. Be to, kaip jūs apie tai žinotumėte be rankinio prisijungimo prie serverio?
Šis scenarijus, kai jis paleistas vieną kartą per dieną su cron, įspės, kad kai kurių sistemos kietųjų diskų blogų sektorių skaičius pasiekė ribą, kuri yra sąmoningai mažesnė nei „diskas yra blogas“ slenksčio, ir išsiųskite įspėjimą mašinos administratoriui.
Būtinos sąlygos ir prielaidos
- Jūs jau nustatėte el. Pašto palaikymą serveriui naudodami „Kaip nustatyti el. Pašto įspėjimus apie„ Linux “vadovą.
- Jūs naudojate Debian'o sistemą.
- Nenaudojate * aparatinės įrangos RAID valdiklio.
- Pamatysite, kad aš naudosiu VIM kaip redaktoriaus programą, tai tik todėl, kad esu įpratęs tai ... galite naudoti bet kurį kitą redaktorių, kurį norite.
* Kadangi labai įmanoma, kad aparatūros RAID valdiklis blokuoja sistemos prieigą prie šios informacijos.
Sąranka
Įdiekite „smartmontools“ paketą, kuris skaito standžiojo disko valdiklio S.M.A.R.T informaciją ir pateikia ją mums.
sudo aptitude įdiegia „smartmontools“
Sukurkite monitoriaus scenarijų:
sudo vim /root/smart-monitor.sh
Padarykite tai turiniu:
#! / bin / bash
######## El. Pašto funkcija ########
email_admin_func ()
echo "To: [email protected]"> $ temp_email_file
echo "Nuo: mašinisto [email protected]" >> $ temp_email_file
echo "Tema: S.M.A.R.T monitoriaus slenkstis pažeistas" >> $ temp_email_file
echo "" >> $ temp_email_file
echo -e $ 1 >> $ temp_email_file
/ usr / sbin / ssmtp -t < $temp_email_file
echo "išsiųstas el. laiškas administratoriui"
smartc_func ()
/ usr / sbin / smartctl -A / dev / $ 1 grep Reallocated_Sector_Ct | tr -s "| cut -d" -f11
######## Funkcijų pabaiga ########
######## Nustatykite darbo parametrą ########
temp_email_file = / tmp / smart_monitor.txt
allow_threshold = 5 # nustatyti blogų sektorių, kuriuos norėtumėte gyventi, kiekį, rekomenduojama 5.
######## Variklis ########
i i sda sdb; do # Įtraukite arba atimkite iš šio sąrašo disko pavadinimus, kurie yra tinkami jūsų sąranka.
jei [["'smartc_func $ i'" -ge $ allow_threshold]]; tada
echo Administratoriaus el. pašto siuntimas
„email_admin_func“ „Vienas iš„ „hostname“ “esančių HDs pasiekė viršutinę ribinę ribą !!! nPrieš ribą nustatė: $ allow_threshold ir $ i disko būsena buvo:„ 'smartc_func $ i' ""
fi
padaryta
Svarbiausios pastabos:
- El. Pašto funkcija - nustatykite tinkamą informaciją, pvz., Įrenginio pavadinimą ir administratoriaus el. Paštą.
- Leistina riba - nustatykite šį parametrą, kuris, jūsų manymu, yra tinkamas, aš naudoju 5, nes naudojamas „serverio klasės“ standžiųjų diskų apribojimas, kuris buvo naudojamas 10-ai. būti 140).
- Nustatykite įrenginius, kuriuos norite stebėti, koreguojant diskų pavadinimų skaičių „už“ kilpoje. Šiuo metu yra du diskai (sda & sdb), todėl koreguokite savo sąranką. Galite įtraukti visus diskus arba tik kai kuriuos, jei dėl kokios nors priežasties turite išjungti diską.
* mano pradiniame nustatyme pirmasis diskas buvo „flash“ diskas, todėl jo informacija buvo perskaityta, jei ne visai įmanoma.
Padarykite scenarijų vykdomąjį failą:
sudo chmod + x /root/smart-monitor.sh
Nustatyta.
Suplanuokite paleistiną scenarijų automatiškai
Norime, kad scenarijus būtų paleistas automatiškai, kad sukurtume naują Cron darbą.
Kaip nurodyta „Kaip užmegzti el. Pašto įspėjimus apie„ Linux “, vadovaujamasi tuo, kad, jei pats scenarijus susiduria su klaida, cron automatiškai informuos mus elektroniniu paštu, kai tik tai įvyksta.
Atidarykite cron užduočių planavimo priemonę:
sudo crontab -e
Pridėkite tai savo turiniui:
0 7 * * * /root/smart-monitor.sh> /tmp/last_smart_monitor_run.log
Tai leis scenarijų paleisti kiekvieną rytą 7 val.
Visi jūsų sektoriai priklauso mums :)