Image

Base de connaissances → Configuration d'un script crontab pour éviter une charge élevée

[Serveurs virtuels]
Date de publication: 27.01.2023

Lorsqu'aucun des services de protection n'a pu repousser l'attaque ou que le serveur a commencé à fonctionner sous une charge élevée pour une autre raison. Nous vous suggérons d'installer le script et de l'exécuter toutes les minutes via le service crontab. Cela vous permettra de ne pas perdre l'accès au serveur lors de charges critiques et de prendre des mesures pour éliminer cette situation.

/etc/cron.daily/load-average-2.sh

#!/bin/bash

loadavg=`uptime | awk '{print $10+0}'`
# bash doesn't understand floating point
# so convert the number to an interger
thisloadavg=`echo $loadavg|awk -F \. '{print $1}'`
if [ "$thisloadavg" -ge "2" ]; then
echo "Busy - Load Average $loadavg ($thisloadavg) "
echo 'Warning - Load AVG (my.server.tld) on:' `date` `uptime` | mailx -s "Warning: LA from `uptime | cut -d'(' -f2 | cut -d')' -f1`" -S smtp=smtp://mail.server.tld -S smtp-auth=login -S smtp-auth user=user@domain.tld -S smtp-auth-password=PassW0rd -S from="LLC COMPANY" to@domain.tld

else
echo "Okay - Load Average $loadavg ($thisloadavg) "
fi

Ce script doit être enregistré dans le fichier load-average-2.sh du dossier /etc/cron.daily et définir les droits d'exécution.

Ensuite, vous devez ajouter une ligne via la commande crontab -e pour l'exécuter toutes les 2 minutes :

*/2 * * * * /etc/cron.daily/load-average-2.sh >> /dev/null 2>&1

Les valeurs doivent être remplacées par les vôtres :

  • my.server.tld - le nom du serveur sur lequel vous installez le script.
  • mail.server.tld - le nom de domaine du serveur de messagerie via lequel le script vous enverra des notifications.
  • user@domain.tld - nom de la boîte aux lettres pour la connexion au serveur de messagerie (login).
  • PassW0rd - mot de passe pour votre compte de messagerie.
  • LLC COMPANY - nom et adresse à partir de laquelle la lettre sera envoyée.
  • to@domain.tld - adresse postale à laquelle la notification sera envoyée.

Si la charge moyenne dépasse 2, c'est-à-dire 200% (2 cœurs), le script enverra une notification. Ce paramètre est mis en surbrillance, vous pouvez le modifier par le vôtre en fonction du nombre de cœurs dont dispose le serveur. Par exemple, si vous avez 4 cœurs, alors la charge maximale sera de 4, c'est-à-dire 400%.

Si nécessaire, vous pouvez ajouter des commandes au script qui doivent être exécutées, par exemple redémarrer les services pour réduire la charge. Vous devez les ajouter avant, par exemple :

service nginx restart
service ddos restart
service httpd restart




Aucun commentaire pour l'instant