Et Shell-skript for å sende e-postvarsel når minnet blir lite


Et kraftig aspekt ved Unix/Linux-skallprogrammer som bash, er deres fantastiske støtte for vanlige programmeringskonstruksjoner som lar deg ta avgjørelser, utføre kommandoer gjentatte ganger, lage nye funksjoner og mye mer. Du kan skrive kommandoer i en fil kjent som et shell-skript og kjøre dem samlet.

Dette gir deg en pålitelig og effektiv metode for systemadministrasjon. Du kan skrive skript for å automatisere oppgaver, for eksempel daglige sikkerhetskopier, systemoppdateringer etc; lage nye tilpassede kommandoer/verktøy/verktøy og mer. Du kan skrive skript for å hjelpe deg med å holde tritt med hva som utspiller seg på en server.

En av de kritiske komponentene til en server er minne (RAM), det har stor innvirkning på den generelle ytelsen til et system.

I denne artikkelen vil vi dele et lite, men nyttig skallskript for å sende en e-postvarsel til en eller flere systemadministrator(er), hvis serverminnet begynner å bli lite.

Dette skriptet er spesielt nyttig for å holde øye med Linux VPS (Virtual Private Servers) med liten mengde minne, for eksempel omtrent 1 GB (omtrent 990 MB).

  1. En CentOS/RHEL 7-produksjonsserver med mailx-verktøy installert med fungerende postfix-e-postserver.

Dette er hvordan alertmemory.sh-skriptet fungerer: først sjekker det ledig minnestørrelse, og bestemmer deretter om mengden ledig minne er mindre eller lik en spesifisert størrelse (100 MB for formålet med denne veiledningen), brukt som en målestokk for den minst akseptable ledige minnestørrelsen.

Hvis denne betingelsen er sann, vil den generere en liste over de 10 beste prosessene som bruker server-RAM og sender en e-postvarsel til spesifiserte e-postadresser.

Merk: Du må gjøre noen endringer i skriptet (spesielt e-postavsenderverktøyet, bruk de riktige flaggene) for å oppfylle kravene til Linux-distribusjon.

#!/bin/bash 
#######################################################################################
#Script Name    :alertmemory.sh
#Description    :send alert mail when server memory is running low
#Args           :       
#Author         :Aaron Kili Kisinga
#Email          :[email 
#License       : GNU GPL-3	
#######################################################################################
## declare mail variables
##email subject 
subject="Server Memory Status Alert"
##sending mail as
from="[email "
## sending mail to
to="[email "
## send carbon copy to
also_to="[email "

## get total free memory size in megabytes(MB) 
free=$(free -mt | grep Total | awk '{print $4}')

## check if free memory is less or equals to  100MB
if [[ "$free" -le 100  ]]; then
        ## get top processes consuming system memory and save to temporary file 
        ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head >/tmp/top_proccesses_consuming_memory.txt

        file=/tmp/top_proccesses_consuming_memory.txt
        ## send email if system memory is running low
        echo -e "Warning, server memory is running low!\n\nFree memory: $free MB" | mailx -a "$file" -s "$subject" -r "$from" -c "$to" "$also_to"
fi

exit 0

Etter å ha opprettet skriptet /etc/scripts/alertmemory.sh, gjør det kjørbart og symlink til cron.hourly.

# chmod +x /etc/scripts/alertmemory.sh
# ln -s -t /etc/cron.hourly/alertmemory.sh /etc/scripts/alertmemory.sh

Dette betyr at skriptet ovenfor kjøres etter hver 1 time så lenge serveren kjører.

Tips: Du kan teste om det fungerer etter hensikten, sette bench mark-verdien litt høyt for enkelt å utløse en e-post som skal sendes, og angi et lite intervall på ca. 5 minutter.

Fortsett deretter å sjekke fra kommandolinjen ved å bruke gratiskommandoen i skriptet. Når du har bekreftet at den fungerer, definer de faktiske verdiene du vil bruke.

Nedenfor er et skjermbilde som viser et eksempel på e-postvarsel.

Det er alt! I denne artikkelen forklarte vi hvordan du bruker shell-script for å sende e-postvarsler til systemadministratorer i tilfelle serverminnet (RAM) blir lite. Du kan dele alle tanker knyttet til dette emnet med oss via tilbakemeldingsskjemaet nedenfor.