Áttekintés
Az olyan programok, mint az "mdadm" (a szoftveres RAID-kezeléshez) és a "Palimpsest Disk Utility" (az Ubuntu LiveCD-ben használt), az S.M.A.R.T információk segítségével tájékoztatják Önt, ha a lemez meghibásodott. Azonban egy fej nélküli kiszolgálón (nincs GUI) nincs szolgáltatás, amely tájékoztatni fogja Önt a függőben lévő vádról, mielőtt túl késő lenne. Továbbá, hogy tudna róla, hogy manuálisan nem jelentkezett be a szerverbe?
Ez a szkript, ha naponta egyszer fut a cron-val, figyelmeztetni fogja, ha a rendszer merevlemez-meghajtók bármelyikének hibás szektorai száma elérte azt a határértéket, amely szándékosan alacsonyabb, mint a "rossz lemez" küszöbérték, és e-mailben elküldi a figyelmeztetést a gép adminisztrátorának.
Előfeltételek és feltételezések
- Már beállította az e-mailes támogatást a kiszolgálóhoz a "Hogyan lehet beállítani az e-mailes értesítéseket Linuxon" útmutatóban?
- Debian alapú rendszert használ.
- Nem * hardveres RAID-vezérlőt használ.
- Látni fogja, hogy a VIM-t szerkesztő programként használom, csak azért, mert hozzászoktam hozzá … használhat bármely más szerkesztőt, amit szeretne.
* Mivel nagyon valószínű, hogy a hardveres RAID-vezérlő blokkolja a rendszer hozzáférését ehhez az információhoz.
Beállít
Telepítse a "smartmontools" csomagot, amely leolvassa az S.M.A.R.T információkat a merevlemez-vezérlőről és bemutatja nekünk.
sudo aptitude install smartmontools
A monitor szkript létrehozása:
sudo vim /root/smart-monitor.sh
Tegye meg ezt a tartalmat:
#!/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
A legfontosabb megemlítendő pontok a következők:
- E-mail funkció - Állítsa be a megfelelő adatokat, például a gép nevét és a rendszergazda e-mailjét.
- Engedélyezett küszöbérték - Állítsd be ezt a paramétert a megfelelőnek, 5-et használtam, mert a "szerver minőségű" merevlemezekre beállított limit 10 volt. (Megállapítottam, hogy a "fogyasztói minőségű" meghajtók küszöbértékét legyen olyan magas, mint 140).
- Állítsa be a megfigyelni kívánt eszközöket a lemez nevének számozásához a "for" hurokban. Jelenleg két lemez (sda & sdb) szerepel, ezért állítsa be a beállításokat. Minden lemezt vagy csak néhányat tartalmazhat, ha valamilyen okból kizárnia kell a lemezt.
* Az eredeti beállításomban az első lemez egy flash meghajtó volt, így az információ olvasása, ha egyáltalán nem volt sok felhasználás.
A script végrehajthatóvá tétele:
sudo chmod +x /root/smart-monitor.sh
A telepítés megtörtént.
A szkript automatikus ütemezésének ütemezése
Azt szeretnénk, hogy a szkript automatikusan elinduljon, így létrehozzuk az új Cron feladatot. Amint az a "Hogyan állíts be e-mail figyelmeztetéseket Linuxon" című fejezetben leírtak szerint, az a végeredmény, hogy ha a szkript maga hibát észlel, a cron automatikusan értesíti e-mailben, amint ez megtörténik.
Nyissa meg a cron feladat ütemezőjét:
sudo crontab -e
Adja hozzá a tartalmához:
0 7 * * * /root/smart-monitor.sh > /tmp/last_smart_monitor_run.log
Ez beállítja a forgatókönyvet minden reggel 7: 00-kor.
Minden ágazata hozzánk tartozik:)