Recherche de site Web

Un script Shell pour envoyer une alerte par e-mail lorsque la mémoire devient faible


Un aspect puissant des programmes shell Unix/Linux tels que bash est leur incroyable prise en charge des constructions de programmation courantes qui vous permettent de prendre des décisions, d'exécuter des commandes à plusieurs reprises, de créer de nouvelles fonctions et bien plus encore. Vous pouvez écrire des commandes dans un fichier appelé script shell et les exécuter collectivement.

Cela vous offre un moyen fiable et efficace d’administration système. Vous pouvez écrire des scripts pour automatiser des tâches, par exemple des sauvegardes quotidiennes, des mises à jour du système, etc. ; créez de nouvelles commandes/utilitaires/outils personnalisés et au-delà. Vous pouvez écrire des scripts pour vous aider à suivre ce qui se passe sur un serveur.

L'un des composants critiques d'un serveur est la mémoire (RAM), elle a un impact considérable sur les performances globales d'un système.

Dans cet article, nous partagerons un script shell petit mais utile pour envoyer un e-mail d'alerte à un ou plusieurs administrateurs système, si la mémoire du serveur est faible.

Ce script est particulièrement utile pour garder un œil sur les VPS Linux (Serveurs privés virtuels) avec une petite quantité de mémoire, disons d'environ 1 Go ( environ 990 Mo).

Configuration de l'environnement de test

  1. Un serveur de production CentOS/RHEL 7 avec l'utilitaire mailx installé avec un serveur de messagerie postfix fonctionnel.

Voici comment fonctionne le script alertmemory.sh : il vérifie d'abord la taille de la mémoire libre, puis détermine si la quantité de mémoire libre est inférieure ou égale à une taille spécifiée (100 Mo pour les besoins de ce guide), utilisé comme référence pour la taille de mémoire libre la moins acceptable.

Si cette condition est vraie, il générera une liste des 10 principaux processus consommant de la RAM du serveur et enverra un e-mail d'alerte aux adresses e-mail spécifiées.

Remarque : Vous devrez apporter quelques modifications au script (en particulier à l'utilitaire d'envoi de courrier, utilisez les indicateurs appropriés) pour répondre aux exigences de vos distributions Linux.


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

Après avoir créé votre script /etc/scripts/alertmemory.sh, rendez-le exécutable et créez un lien symbolique vers cron.hourly.


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

Cela signifie que le script ci-dessus sera exécuté toutes les heures tant que le serveur est en cours d'exécution.

Conseil : Vous pouvez tester s'il fonctionne comme prévu, définir la valeur de référence un peu élevée pour déclencher facilement l'envoi d'un e-mail et spécifier un petit intervalle de environ 5 minutes.

Continuez ensuite à vérifier depuis la ligne de commande en utilisant la commande gratuite fournie dans le script. Une fois que vous confirmez que cela fonctionne, définissez les valeurs réelles que vous souhaitez utiliser.

Vous trouverez ci-dessous une capture d'écran montrant un exemple d'e-mail d'alerte.

C'est tout! Dans cet article, nous avons expliqué comment utiliser un script shell pour envoyer des e-mails d'alerte aux administrateurs système au cas où la mémoire du serveur (RAM) serait faible. Vous pouvez partager avec nous vos réflexions sur ce sujet via le formulaire de commentaires ci-dessous.