Recherche de site Web

Un script shell pour envoyer une alerte par e-mail lorsque la mémoire est 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 du 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 allons partager un petit mais utile script shell pour envoyer un e-mail d’alerte à un ou plusieurs administrateur(s) système, si la mémoire du serveur est faible.

Ce script est particulièrement utile pour garder un œil sur les VPS Linux (Virtual Private Servers) 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ée comme référence pour la taille de mémoire libre la moins acceptable.

Si cette condition est vraie, il génère une liste des 10 processus qui consomment le plus de RAM du serveur et envoie 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 drapeaux appropriés) pour répondre à vos exigences en matière de 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 1 heure tant que le serveur fonctionnera.

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

Continuez ensuite à vérifier à partir de la ligne de commande en utilisant la commande libre fournie dans le script. Une fois que vous avez vérifié qu’il 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 le script shell pour envoyer des e-mails d’alerte aux administrateurs système en cas de manque de mémoire du serveur (RAM). Vous pouvez partager vos réflexions sur ce sujet avec nous via le formulaire de commentaires ci-dessous.

Articles connexes: