Magazine Humeur

Linux : comment réagir automatiquement à une charge serveur trop importante

Publié le 14 juillet 2015 par Christophe_casalegno

Quand vous administrez des serveurs, il peut être utile de pouvoir déclencher un certain nombre d'actions automatiquement (redémarrer un service, ajouter une règle dans un firewall, tuer un processus, envoyer une alerte, etc.) lorsque la charge du serveur est trop élevée.

Le problème de la plupart des scripts (sans entrer dans des usines à gaz) qui permettent cela est qu'ils risquent d'exécuter les actions tant que la charge n'est pas descendue alors que tout est entrain de rentrer dans l'ordre, ce qui peut être la cause d'indisponibilité.

La solution est alors simplement de vérifier 2 états de la charge et de les comparer pour savoir si cette dernière est bien entrain de diminuer ou si le problème persiste avant d'exécuter vos commandes.

Place au code :


#!/bin/sh

tsleep=2 # temps d'attente entre 2 checks
llimit=8 # seuil de charge avant action
action="/home/dni/action.sh" # script ou programme à exécuter si nécessaire

load=`cat /proc/loadavg |awk {'print $1'}|cut -d "." -f1` # La charge maintenant
sleep $tsleep
load2=`cat /proc/loadavg |awk {'print $1'}|cut -d "." -f1` # La charge après tsleep

if test "$load" -ge $llimit

then

if test "$load2" -ge $load
then
$action

else
echo "ok" 1>&2

fi

else

echo "ok" 1>&2

Il n'y a plus qu'à rajouter le script dans votre crontab chaque minute par exemple et dire bonne nuit à votre serveur. Vous pouvez également télécharger directement ce script depuis l'adresse suivante (commentaires en anglais) : http://www.christophe-casalegno.com/tools/monitor.sh

-
Christophe Casalegno
https://twitter.com/Brain0verride

You must log in to post a comment.


Retour à La Une de Logo Paperblog

A propos de l’auteur


Christophe_casalegno 1903 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte

Dossier Paperblog

Magazines