/ / Harddisk Monitor script til headless Linux-servere

Harddiskmonitor script til headless Linux-servere

cool-tegneserie-2569506

Moderne harddiske har en intern mekanismekaldet S.M.A.R.T. hvorigennem det er muligt at vide, hvornår en harddisk er ved at fejle. Ville det ikke være dejligt af serveren at e-maile dig, før en sådan fiasko?

Oversigt

Programmer som “mdadm” (til software RAIDadministration) og “Palimpsest Disk Utility” (brugt på Ubuntu LiveCD), brug S.M.A.R.T informationen til at informere dig, når disken er ved at eller er mislykket. På en headless server (ingen GUI) er der dog ingen service, der vil informere dig om den verserende undergang, før det er for sent. Hvordan skulle du desuden vide om det uden manuelt at logge ind på serveren?

Dette script, når det køres en gang om dagen med cron, viladvarsel, hvis en af ​​systemets tæller for harddiske for dårlige sektorer har nået en grænse, der bevidst er lavere end "disken er dårlig" tærskel, og e-mail advarslen til maskinens administrator.

Forudsætninger og antagelser

  • Du har allerede konfigureret e-mail-support til serveren ved hjælp af guiden "Sådan opsættes e-mail-advarsler på Linux".
  • Du bruger et Debian-baseret system.
  • Du bruger ikke en * RAID-controller til hardware.
  • Du vil se mig bruge VIM som redigeringsprogram, dette er bare fordi jeg er vant til det ... du kan bruge enhver anden editor, du gerne vil.

* Fordi det er meget muligt, at RAID-controllerens hardware blokerer systemets adgang til disse oplysninger.

Opsætning

Installer pakken “smartmontools”, der læser S.M.A.R.T-oplysningerne fra harddiskcontrolleren og præsenterer dem for os.

sudo aptitude install smartmontools

Opret monitorskriptet:

sudo vim /root/smart-monitor.sh

Gør dette til det er indhold:

#!/bin/bash
########Email function########
email_admin_func()
{
echo "To: machine-admin@some-domain.com" > $temp_email_file
echo "From: machine-name@some-domain.com" >> $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

De vigtigste punkter at bemærke er:

  • E-mail-funktion - Angiv de relevante oplysninger som maskinens navn og administrator-e-mail.
  • Tilladt tærskelværdi - Indstil denne parameter til hvaddu synes er passende, jeg har brugt 5, fordi grænsen, der er indstillet til “server grade” harddiske, jeg har brugt, var 10. (Jeg har fundet, at tærsklen for “forbrugerkvalitet” -drev er så høj som 140).
  • Indstil de enheder, du vil overvåge afjustering af optællingen af ​​disknavne i “for” -løkken. I øjeblikket er to diske (sda & sdb) inkluderet, så juster dig for din opsætning. Du kan medtage alle dine diske eller bare nogle, hvis du er nødt til at * ekskludere en disk af en eller anden grund.

* I min oprindelige opsætning var den første disk et flashdrev, så at læse dens oplysninger, hvis det overhovedet er muligt, er ikke til stor nytte.

Gør scriptet eksekverbart:

sudo chmod +x /root/smart-monitor.sh

Opsætningen er færdig.

Planlæg scriptet, der skal køres automatisk

Vi ønsker at få scriptet til at køre automatisk, så vi opretter et nyt Cron-job til det.
Som det fremgår af “Sådan konfigureres e-mail-advarsler på Linux”, er resultatet af, at man gør det, at hvis scriptet selv støder på en fejl, vil cron automatisk informere os via e-mail, så snart det sker.

Åbn cron-jobplanlæggeren:

sudo crontab -e

Føj dette til dets indhold:

0 7 * * * /root/smart-monitor.sh > /tmp/last_smart_monitor_run.log

Dette indstiller scriptet til at køre hver morgen kl.


Alle dine sektorer tilhører os :)</ P>