Pārskats
Programmas, piemēram, "mdadm" (programmatūras RAID pārvaldībai) un "Palimpsest Disk Utility" (lieto Ubuntu LiveCD), izmanto informāciju S.M.A.R.T, lai informētu jūs, kad disks ir par vai nav bijis. Tomēr bezgalīgi serverī (bez GUI) nav pakalpojumu, kas informēs jūs par neizlemto nožēlu, pirms nav par vēlu. Turklāt, kā jūs par to zinātu, manuāli neiesakoties serverī?
Šis skripts, kad tas tiek izpildīts vienu reizi dienā ar cron, brīdinās, vai kāds no sistēmas cietie diski slikto sektoru skaita ir sasniedzis ierobežojumu, kas ir apzināti zemāks, tad "disks ir slikts" slieksnis, un e-pastu brīdinājumu mašīnas administratoram.
Priekšnoteikumi un pieņēmumi
- Jūs jau esat iestatījis e-pasta atbalstu serverim, izmantojot ceļvedi "Kā iestatīt e-pasta brīdinājumus uz Linux".
- Jūs izmantojat Debian balstītu sistēmu.
- Jūs neizmantojat * aparatūras RAID kontrolieri.
- Jūs redzēsit mani izmantot VIM kā redaktoru programmu, tas ir tikai tāpēc, ka esmu pieradis pie tā … jūs varat izmantot jebkuru citu redaktoru, kuru vēlaties.
* Tā kā ir ļoti iespējams, ka aparatūras RAID kontrolieris bloķē sistēmas piekļuvi šai informācijai.
Uzstādīt
Instalējiet "smartmontools" pakotni, kas no cietā diska kontrollera izlasa informāciju S.M.A.R.T un iesniedz to mums.
sudo aptitude install smartmontools
Izveidojiet monitora skriptu:
sudo vim /root/smart-monitor.sh
Padarīt šo saturu:
#!/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
Galvenie punkti ir šādi:
- E-pasta funkcija - iestatiet atbilstošu informāciju, piemēram, mašīnas nosaukumu un administratora e-pastu.
- Atļautā sliekšņa - iestatīt šo parametru uz to, kas jums šķiet piemērots, esmu izmantojis 5, jo ierobežotais "servera kategorijas" cieto disku skaits, ko izmantoja, bija 10. (I'v atrada slieksni "patērētāju kategorijas" diskdziņiem būt tikpat augsti kā 140).
- Iestatiet ierīces, kuras vēlaties kontrolēt, pielāgojot diska nosaukumu skaitīšanu ciklā "for". Pašlaik ir iekļauti divi diski (sda & sdb), tāpēc pielāgojiet iestatījumus. Jūs varat iekļaut visus savus diskus vai tikai dažus, ja jums ir nepieciešams * izslēgt disku kāda iemesla dēļ.
* manā oriģinālajā iestatījumā pirmais disks bija zibatmiņas disks, tādēļ nolasot tā informāciju, ja tas ir iespējams, nav daudz lietojuma.
Padariet skriptu izpildāmu:
sudo chmod +x /root/smart-monitor.sh
Iestatīšana ir pabeigta.
Plānojiet skriptu, kas jāiedarbina automātiski
Mēs vēlamies, lai skripts palaistu automātiski, tāpēc mēs izveidosim jaunu Cron darbu. Kā norādīts sadaļā "Kā iestatīt e-pasta brīdinājumus operētājsistēmā Linux", tiek parādīts, ka, ja pats skripts saskata kļūdu, cron automātiski informēs mūs pa e-pastu, tiklīdz tas notiks.
Atveriet cron darba plānotāju:
sudo crontab -e
Pievienot tai savam saturam:
0 7 * * * /root/smart-monitor.sh > /tmp/last_smart_monitor_run.log
Tas noteiks skriptu, kuru izpildīt katru rītu plkst. 7:00.
Viss jūsu nozare pieder mums:)