Hjemmeside » hvordan » Hard Drive Monitor Script til Headless Linux-servere

    Hard Drive Monitor Script til Headless Linux-servere

    Moderne harddiske har en intern mekanisme kaldet S.M.A.R.T. hvorigennem det er muligt at vide, hvornår en harddisk er ved at svigte. Ville det ikke være dejligt for serveren at sende dig en e-mail før en sådan fejltagelse?

    Oversigt

    Programmer som "mdadm" (til software RAID-styring) og "Palimpsest Disk Utility" (bruges på Ubuntu LiveCD), bruger oplysningerne S.M.A.R.T til at informere dig, når disken er ved at eller har fejlet. Men på en hovedløs server (ingen GUI) er der ingen service, der informerer dig om det ventende dum, inden det er for sent. Desuden, hvordan ville du vide om det uden manuelt at logge ind på serveren?

    Dette script, når det køres en gang om dagen med cron, vil advare om nogen af ​​systemets harddiske, der er svage sektorer, har nået en grænse, der bevidst er lavere, så "disken er dårlig" tærskel, og mailen advarslen til maskinens administrator.

    Forudsætninger og forudsætninger

    • Du har allerede konfigureret Email support til serveren ved hjælp af vejledningen "Sådan opretter du e-mail-underretninger om Linux".
    • Du bruger et Debian-baseret system.
    • Du bruger ikke en RAID-controller til hardware.
    • Du vil se mig bruge VIM som redaktørprogrammet, det er bare fordi jeg er vant til det ... du kan bruge andre redaktører, som du gerne vil have.

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

    Opsætning

    Installer pakken "smartmontools", som læser S.M.A.R.T informationen fra harddisk controller og præsenterer den til os.

    sudo aptitude installer smartmontools

    Opret skærmskriptet:

    sudo vim /root/smart-monitor.sh

    Gør dette det indhold:

    #! / Bin / bash
    ######## Emailfunktion #########
    email_admin_func ()

    ekko "Til: [email protected]"> $ temp_email_file
    ekko "Fra: [email protected]" >> $ temp_email_file
    ekko "Emne: S.M.A.R.T overvåge tærskel brudt" >> $ temp_email_file
    ekko "" >> $ temp_email_file
    ekko -e $ 1 >> $ temp_email_file
    / usr / sbin / ssmtp -t < $temp_email_file
    ekko "Sendt en email til administratoren"

    smartc_func ()

    / usr / sbin / smartctl -A / dev / $ 1 | grep Reallocated_Sector_Ct | tr -s "| cut -d" -f11

    ##########################################

    ####### Indstil arbejdsparameter ########
    temp_email_file = / tmp / smart_monitor.txt
    allowed_threshold = 5 #sæt mængden af ​​dårlige sektorer, du er villig til at leve med, anbefales 5.

    ######## Engine ########
    for jeg i sda sdb; gør # Tilføj eller trække disknavne fra denne liste, som det passer til din opsætning.
    hvis [["'smartc_func $ i'" -ge $ allowed_threshold]]; derefter
    ekko Emailing til administratoren
    email_admin_func "En af HD'erne på" "værtsnavn" "har nået den øvre grænse grænse !!! nTærsklen er sat til: $ allowed_threshold og $ i diskstatusen var:" 'smartc_func $ i'
    fi
    Færdig

    Hovedpunkterne er at:

    • E-mail-funktion - Indstil de relevante oplysninger som maskinens navn og administrator email.
    • Tilladt tærskel - Indstil denne parameter til det, du mener er passende, jeg har brugt 5, fordi grænsen for de "harddisker", der var brugt, var 10. (jeg har fundet tærsklen for "forbrugerkvalitet" drev til være så høj som 140).
    • Indstil de enheder, du vil overvåge ved at justere opgørelsen af ​​disknavne i "for" -sløjfen. I øjeblikket er to diske (sda & sdb) inkluderet, så juster til dit setup. Du kan inkludere alle dine diske eller bare nogle, hvis du skal * ekskludere en disk af en eller anden grund.

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

    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 vil oprette et nyt Cron-job til det.
    Som angivet i "Sådan opstiller du e-mail-advarsler om Linux", er resultatet af det, at hvis scriptet selv oplever en fejl, informerer cron automatisk os via e-mail, så snart det sker.

    Åbn cron jobplanlæggeren:

    sudo crontab -e

    Tilføj dette til dets indhold:

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

    Dette vil sætte scriptet til at køre hver morgen kl. 7.00.


    Hele din sektor tilhører os :)