Zoeken op website

Een Shell-script om een e-mailwaarschuwing te verzenden wanneer het geheugen bijna op is


Een krachtig aspect van Unix/Linux shell-programma's zoals bash is hun verbazingwekkende ondersteuning voor algemene programmeerconstructies waarmee u beslissingen kunt nemen, opdrachten herhaaldelijk kunt uitvoeren, nieuwe functies kunt creëren en nog veel meer. U kunt opdrachten schrijven in een bestand dat bekend staat als een shellscript en deze gezamenlijk uitvoeren.

Dit biedt u een betrouwbare en effectieve manier van systeembeheer. U kunt scripts schrijven om taken te automatiseren, bijvoorbeeld dagelijkse back-ups, systeemupdates enz.; maak nieuwe aangepaste opdrachten/hulpprogramma's/tools en meer. U kunt scripts schrijven waarmee u op de hoogte kunt blijven van wat er op een server gebeurt.

Een van de kritische componenten van een server is geheugen (RAM). Dit heeft een grote invloed op de algehele prestaties van een systeem.

In dit artikel delen we een klein maar nuttig shellscript waarmee u een waarschuwingsmail naar een of meer systeembeheerder(s) kunt sturen als het servergeheugen bijna leeg is.

Dit script is vooral handig voor het in de gaten houden van Linux VPS (Virtual Private Servers) met een kleine hoeveelheid geheugen, bijvoorbeeld ongeveer 1GB ( ongeveer 990 MB).

Testomgeving instellen

  1. Een CentOS/RHEL 7 productieserver met het hulpprogramma mailx geïnstalleerd met een werkende postfix-mailserver.

Dit is hoe het script alertmemory.sh werkt: eerst controleert het de vrije geheugengrootte en bepaalt vervolgens of de hoeveelheid vrij geheugen kleiner of gelijk is aan een opgegeven grootte (100 MB voor het doel van deze handleiding), gebruikt als maatstaf voor de minst acceptabele vrije geheugengrootte.

Als deze voorwaarde waar is, wordt er een lijst gegenereerd met de tien belangrijkste processen die server-RAM verbruiken en wordt er een waarschuwings-e-mail verzonden naar opgegeven e-mailadressen.

Opmerking: je zult een paar wijzigingen in het script moeten aanbrengen (vooral het hulpprogramma voor het verzenden van e-mail, gebruik de juiste vlaggen) om aan de vereisten van je Linux-distributies te voldoen.


#!/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

Nadat u uw script /etc/scripts/alertmemory.sh hebt gemaakt, maakt u het uitvoerbaar en koppelt u het aan cron.hourly.


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

Dit betekent dat het bovenstaande script na elk uur wordt uitgevoerd zolang de server actief is.

Tip: u kunt testen of het werkt zoals bedoeld, de benchmarkwaarde een beetje hoog instellen om eenvoudig een e-mail te activeren die moet worden verzonden, en een klein interval opgeven van ongeveer 5 minuten.

Blijf vervolgens controleren vanaf de opdrachtregel met behulp van de gratis opdracht in het script. Nadat u hebt bevestigd dat het werkt, definieert u de werkelijke waarden die u wilt gebruiken.

Hieronder ziet u een schermafbeelding van een voorbeeld van een waarschuwings-e-mail.

Dat is alles! In dit artikel hebben we uitgelegd hoe u shellscript kunt gebruiken om waarschuwings-e-mails naar systeembeheerders te sturen in het geval dat het servergeheugen (RAM) bijna leeg is. U kunt uw gedachten over dit onderwerp met ons delen via het onderstaande feedbackformulier.