Startpagina » hoe » Hard Drive Monitor Script voor Linux-servers zonder hoofd

    Hard Drive Monitor Script voor Linux-servers zonder hoofd

    Moderne harde schijven hebben een intern mechanisme genaamd S.M.A.R.T. waardoor het mogelijk is om te weten wanneer een harde schijf op het punt staat te mislukken. Zou het niet aardig zijn als de server je een e-mail stuurt voor een dergelijke storing?

    Overzicht

    Programma's zoals de "mdadm" (voor software RAID-beheer) en de "Palimpsest Disk Utility" (gebruikt op de Ubuntu LiveCD), gebruiken de S.M.A.R.T-informatie om u te informeren wanneer de schijf op het punt staat of is mislukt. Op een headless-server (geen GUI) is er echter geen service die u op de hoogte stelt van de dreigende ondergang voordat het te laat is. Bovendien, hoe zou u dat weten zonder handmatig in te loggen op de server?

    Dit script, wanneer het eenmaal per dag wordt uitgevoerd met cron, waarschuwt of een bepaald aantal harde schijven van het systeem met slechte schijven een limiet heeft bereikt die opzettelijk lager is dan de drempelwaarde voor "de schijf is slecht" en stuurt de waarschuwing per e-mail naar de beheerder van het apparaat.

    Vereisten en aannames

    • U hebt e-mailondersteuning voor de server al ingesteld met behulp van de handleiding 'E-mailwaarschuwingen instellen op Linux'.
    • U gebruikt een op Debian gebaseerd systeem.
    • U gebruikt geen * hardware RAID-controller.
    • Je zult zien dat ik VIM als het bewerkingsprogramma gebruik, dit is alleen omdat ik eraan gewend ben ... je zou elke andere editor kunnen gebruiken die je zou willen.

    * Omdat het heel goed mogelijk is dat de hardware-RAID-controller de toegang van het systeem tot deze informatie blokkeert.

    Opstelling

    Installeer het "smartmontools" -pakket dat de S.M.A.R.T-informatie van de vaste schijfcontroller leest en deze aan ons presenteert.

    sudo aptitude installeert smartmontools

    Maak het monitorscript:

    sudo vim /root/smart-monitor.sh

    Maak dit zijn inhoud:

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

    echo "To: [email protected]"> $ temp_email_file
    echo "Van: [email protected]" >> $ temp_email_file
    echo "Onderwerp: S.M.A.R.T monitor Drempel overschreden" >> $ temp_email_file
    echo "" >> $ temp_email_file
    echo -e $ 1 >> $ temp_email_file
    / usr / sbin / ssmtp -t < $temp_email_file
    echo "Stuur een e-mail naar de beheerder"

    smartc_func ()

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

    ######## Einde van functies ########

    ######## Werkparameter instellen ########
    temp_email_file = / tmp / smart_monitor.txt
    allowed_threshold = 5 #set de hoeveelheid slechte sectoren waarmee je wilt leven, aanbevolen 5.

    ########Motor########
    voor i in sda sdb; doe # Voeg schijfnamen toe of verwijder deze van deze lijst, afhankelijk van uw opstelling.
    als [["'smartc_func $ i'" -ge $ allowed_threshold]]; dan
    echo De beheerder e-mailen
    email_admin_func "Een van de HD's aan" 'hostnaam' ", heeft de bovenste drempelwaarde bereikt !!! nDe drempelwaarde was ingesteld op: $ allowed_threshold en de $ i diskstatus was:" 'smartc_func $ i' ""
    fi
    gedaan

    De belangrijkste punten om op te merken zijn:

    • E-mailfunctie - Stel de juiste informatie in zoals de naam van de machine en de e-mail van de beheerder.
    • Toegestane drempelwaarde - Stel deze parameter in op wat u denkt dat geschikt is, ik heb er 5 gebruikt omdat de limiet die is ingesteld voor de harde schijf "serverklasse" die ik heb gebruikt 10. was (ik heb de drempel voor "consument-grade" -schijven gevonden om zo hoog zijn als 140).
    • Stel de apparaten in die u wilt controleren door de opsomming van schijfnamen in de lus "voor" aan te passen. Momenteel zijn twee schijven (sda en sdb) inbegrepen, dus pas deze aan voor je installatie. U kunt al uw schijven opnemen of slechts enkele, als u * om wat voor reden dan ook een schijf moet uitsluiten.

    * in mijn oorspronkelijke opstelling was de eerste schijf een flashstation, dus het lezen van de informatie als het enigszins mogelijk is, heeft weinig zin.

    Maak het script uitvoerbaar:

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

    De installatie is voltooid.

    Plan het script automatisch uit

    We willen het script automatisch laten uitvoeren, zodat we er een nieuwe Cron-job voor maken.
    Zoals vermeld in de "Hoe e-mailwaarschuwingen instellen op Linux" gids het gevolg is, is dat als het script zelf een fout tegenkomt, cron ons automatisch via e-mail zal informeren zodra het gebeurt.

    Open de cron-taakplanner:

    sudo crontab -e

    Voeg dit toe aan zijn inhoud:

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

    Hiermee wordt het script ingesteld dat elke ochtend om 07:00 uur wordt uitgevoerd.


    Al uw sectoren zijn van ons :)