Hjemmeside » hvordan » Harddisk Monitor Script for Headless Linux-servere

    Harddisk Monitor Script for Headless Linux-servere

    Moderne harddisker har en intern mekanisme kalt S.M.A.R.T. som det er mulig å vite når en harddisk er i ferd med å mislykkes. Ville det ikke vært fint for serveren å sende deg en e-post før en slik feil?

    Oversikt

    Programmer som "mdadm" (for programvare RAID-styring) og "Palimpsest Disk Utility" (brukt på Ubuntu LiveCD), bruker informasjonen S.M.A.R.T for å informere deg når disken er i ferd med eller har feilet. Men på en headless server (ingen GUI) er det ingen tjeneste som vil informere deg om den ventende dommen før den er for sent. Videre, hvordan vil du vite om det uten å logge på serveren manuelt?

    Dette skriptet, når det kjøres en gang om dagen med cron, vil varsle om noen av systemets harddisker er svake sektorer, har nådd en grense som bevisst er lavere enn "disken er dårlig" terskel, og sende varslingen til maskinens administrator.

    Forutsetninger og forutsetninger

    • Du har allerede konfigurert e-postsupport for serveren ved å bruke veiledningen "Hvordan oppsett e-postvarsler på Linux".
    • Du bruker et Debian-basert system.
    • Du bruker ikke en * hardware RAID-kontroller.
    • Du vil se meg bruke VIM som redigeringsprogrammet, dette er bare fordi jeg er vant til det ... du kan bruke andre redaktører som du vil ha.

    * Fordi det er svært mulig at maskinvare RAID-kontrolleren blokkerer systemets tilgang til denne informasjonen.

    Setup

    Installer "smartmontools" -pakken som leser S.M.A.R.T-informasjonen fra harddiskkontrollen og presenterer den for oss.

    sudo aptitude installere smartmontools

    Opprett skjermskriptet:

    sudo vim /root/smart-monitor.sh

    Gjør dette til innhold:

    #! / Bin / bash
    ######## E-postfunksjon #########
    email_admin_func ()

    ekko "Til: [email protected]"> $ temp_email_file
    ekko "Fra: [email protected]" >> $ temp_email_file
    ekko "Emne: S.M.A.R.T skjermgrense brudd" >> $ temp_email_file
    ekko "" >> $ temp_email_file
    ekko-e $ 1 >> $ temp_email_file
    / usr / sbin / ssmtp -t < $temp_email_file
    ekko "Sendt en e-post til administratoren"

    smartc_func ()

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

    ####### End of Functions ########

    ####### Sett arbeidsparameter ########
    temp_email_file = / tmp / smart_monitor.txt
    allowed_threshold = 5 #sett mengden dårlige sektorer du er villig til å leve med, anbefales 5.

    ########Motor########
    for jeg i sda sdb; gjør # Legg til eller trekk ut disknavn fra denne listen som passer for oppsettet ditt.
    hvis [["'smartc_func $ i'" -ge $ allowed_threshold]]; deretter
    ekko via e-post til administratoren
    email_admin_func "En av HD-ene på" "vertsnavn" "har nådd den øvre grensegrensen! nTærskelen ble satt til: $ allowed_threshold og $ i-diskstatusen var:" 'smartc_func $ i'
    fi
    ferdig

    Nøkkelpunktene å merke seg er:

    • E-postfunksjon - Angi riktig informasjon som maskinnavn og administrator e-post.
    • Tillatt terskel - Sett denne parameteren til det du føler er hensiktsmessig, jeg har brukt 5 fordi grensen for harddiskene "server grade" jeg brukte var 10. (jeg har funnet terskelen for "forbruker grade" -drivere til være så høy som 140).
    • Sett inn enhetene du vil overvåke ved å justere opptellingen av disknavn i "for" -sløyfen. For tiden er to disker (sda og sdb) inkludert, så juster for oppsettet ditt. Du kan inkludere alle diskene dine eller bare noen, hvis du trenger å * utelukke en disk av en eller annen grunn.

    * I mitt opprinnelige oppsett var den første disken en flashdisk, så leser informasjonen hvis det ikke er mulig å bruke det.

    Gjør skriptet kjørbart:

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

    Oppsettet er ferdig.

    Planlegg scriptet som skal kjøres automatisk

    Vi ønsker å gjøre skriptet kjørt automatisk, slik at vi vil opprette en ny Cron-jobb for den.
    Som beskrevet i "Hvordan oppsett e-postvarsler på Linux", styrer du resultatet av det, er det at hvis skriptet selv møter en feil, vil cron automatisk informere oss via e-post så snart det skjer.

    Åpne cron jobbplanleggeren:

    sudo crontab -e

    Legg dette til innholdet:

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

    Dette vil sette skriptet til å kjøre hver morgen klokken 7.00.


    All din sektor tilhører oss :)