Website-Suche

Ein Shell-Skript zum Senden einer E-Mail-Benachrichtigung, wenn der Speicher knapp wird


Ein leistungsstarker Aspekt von Unix/Linux-Shell-Programmen wie bash ist ihre erstaunliche Unterstützung für gängige Programmierkonstrukte, die es Ihnen ermöglichen, Entscheidungen zu treffen, Befehle wiederholt auszuführen, neue Funktionen zu erstellen und vieles mehr. Sie können Befehle in eine Datei schreiben, die als Shell-Skript bezeichnet wird, und sie gemeinsam ausführen.

Dies bietet Ihnen eine zuverlässige und effektive Möglichkeit zur Systemadministration. Sie können Skripte schreiben, um Aufgaben zu automatisieren, zum Beispiel tägliche Backups, Systemaktualisierungen usw.; Erstellen Sie neue benutzerdefinierte Befehle/Dienstprogramme/Tools und mehr. Sie können Skripte schreiben, die Ihnen helfen, über die Vorgänge auf einem Server auf dem Laufenden zu bleiben.

Eine der kritischen Komponenten eines Servers ist der Arbeitsspeicher (RAM), er hat großen Einfluss auf die Gesamtleistung eines Systems.

In diesem Artikel stellen wir ein kleines, aber nützliches Shell-Skript vor, mit dem Sie eine Warn-E-Mail an einen oder mehrere Systemadministratoren senden können, wenn der Serverspeicher knapp wird.

Dieses Skript ist besonders nützlich, um Linux VPS (Virtual Private Server) im Auge zu behalten, die über wenig Arbeitsspeicher verfügen, beispielsweise etwa 1 GB ( ca. 990 MB).

Einrichtung der Testumgebung

  1. Ein CentOS/RHEL 7-Produktionsserver mit installiertem mailx-Dienstprogramm und funktionierendem Postfix-Mailserver.

So funktioniert das Skript alertmemory.sh: Zuerst prüft es die Größe des freien Speichers und bestimmt dann, ob die Menge des freien Speichers kleiner oder gleich einer angegebenen Größe (100 MB) ist für die Zwecke dieses Handbuchs) wird als Benchmark für die geringste akzeptable freie Speichergröße verwendet.

Wenn diese Bedingung erfüllt ist, wird eine Liste der 10 Prozesse generiert, die am meisten Server-RAM verbrauchen, und eine Warn-E-Mail an die angegebenen E-Mail-Adressen gesendet.

Hinweis: Sie müssen einige Änderungen am Skript vornehmen (insbesondere am E-Mail-Sender-Dienstprogramm, verwenden Sie die entsprechenden Flags), um die Anforderungen Ihrer Linux-Distributionen zu erfüllen.


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

Nachdem Sie Ihr Skript /etc/scripts/alertmemory.sh erstellt haben, machen Sie es ausführbar und verknüpfen Sie es mit cron.hourly.


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

Das bedeutet, dass das obige Skript alle 1 Stunde ausgeführt wird, solange der Server läuft.

Tipp: Sie können testen, ob es wie vorgesehen funktioniert, den Benchmark-Wert etwas hoch einstellen, um den Versand einer E-Mail problemlos auszulösen, und ein kleines Intervall angeben etwa 5 Minuten.

Überprüfen Sie dann weiterhin von der Befehlszeile aus, indem Sie den im Skript bereitgestellten kostenlosen Befehl verwenden. Sobald Sie bestätigt haben, dass es funktioniert, definieren Sie die tatsächlichen Werte, die Sie verwenden möchten.

Unten sehen Sie einen Screenshot, der eine Beispiel-Benachrichtigungs-E-Mail zeigt.

Das ist alles! In diesem Artikel haben wir erklärt, wie Sie mithilfe eines Shell-Skripts Warn-E-Mails an Systemadministratoren senden, falls der Serverspeicher (RAM) knapp wird. Über das unten stehende Feedback-Formular können Sie uns Ihre Gedanken zu diesem Thema mitteilen.