Table des matières
Description
Voici un script bash que vous pouvez déposer sur votre serveur en mode Gandi AI ou Expert, afin d'être alerté par mail en cas de dépassement du quota d'utilisation de l'un des disques attachés au serveur.
Le script qui suit, va lister tous les disques montés sur le serveur et vérifier l'utilisation de l'espace disque sur chacun d'eux, puis enverra un mail en indiquant uniqdeploying-rails-applicationsuement les disques ayant dépassé le quota.
Mise en place
Pour installer le script, connectez vous en SSH sur votre serveur avec l'utilisateur 'admin' et le mot de passe défini à la création du serveur.
Puis, créez le fichier du script dans un répertoire ou l'utilisateur 'admin' a les droits, ou bien créez ce répertoire. Par exemple, je placerai mon script dans '/srv/d_mondisque/scripts' (où 'd_mondisque' est le nom du disque à adapter par rapport à votre configuration).
Pour créer le répertoire et créer le fichier, tapez :
mkdir /srv/d_nomdudisque/scripts ; touch /srv/d_nomdudisque/scripts/checkdisk.sh
Puis éditez le fichier afin d'y placer le script de vérification 'vim /srv/d_nomdudisque/scripts/checkdisk.sh', collez ensuite le script suivant :
#!/bin/bash # Ex alert_quota=90 -> Vous serez alerté si l'un des disques monté sur votre serveur atteint plus de 90% d'utilisation de l'espace alert_quota=90 #Définir le destinataire du mail destinataire="toto@example.net" #Par défaut user@hostname emetteur=`whoami`"@"`hostname` i=0 for disk in `df | grep /dev/xvd | awk -F" " '{print $1}' | cut -d/ -f3` do space_use=`df | grep $disk | awk -F" " '{print $5}' | cut -d% -f1` if [ "$space_use" -gt "$alert_quota" ] then i=$((i + 1)) over_quota["$i"]="$disk" fi done if [ ${#over_quota[*]} -gt 0 ] then subject="Dépassement de quota disque sur le serveur `hostname`" message="Attention ! Le(s) disque(s) suivants ont atteint un quota supérieur à $alert_quota% d'utilisation\n\n" message+="Voici le détails des disques concernés :\n" for disk in ${over_quota[*]} do info_disk=(`df -h | grep $disk | awk -F" " '{print $6, $2, $3, $4, $5}'`) message+="\t|- Point de montage : ${info_disk[O]} - Espace total : ${info_disk[1]} - Espace utilisé : ${info_disk[2]} - Espace Disponible : ${info_disk[3]} - % Espace utilisé : ${info_disk[4]}" done message=`echo -e "$message"` #envoi du mail function fappend { echo "$2">>$1; } temp=".tempmail_"$RANDOM; rm -rf $temp; fappend $temp "From: $emetteur"; fappend $temp "To: $destinataire"; fappend $temp "Subject: $subject"; fappend $temp "Content-Type: text/plain; charset=UTF-8; format=flowed"; fappend $temp "Content-Transfer-Encoding: 8bit"; fappend $temp ""; fappend $temp "$message"; fappend $temp ""; fappend $temp ""; cat $temp| /usr/sbin/sendmail -t; rm $temp; fi
Enfin, appliquez les droits d’exécution sur le fichier :
chmod +x checkdisk.sh
Les deux seules variables intéressantes pour la configuration sont 'alert_quota' et 'destinataire' qui servent à définir le niveau d'alerte en pourcentage et le destinataire du mail. Je vous conseille de modifier la variable 'alert_quota' et d'y mettre une valeur nulle afin de vérifier le bon fonctionnement du script.
Vous pourrez tester manuellement le fonctionnement du script en faisant './checkdisk.sh'.
Si vous recevez un mail, alors cela fonctionne. Modifiez alors la variable en fonction de vos souhaits.
Vérification automatique avec les crontab
Afin d'être alerté automatiquement en cas de dépassement du quota d'alerte sur l'un des disques, nous allons mettre en place une tâche cron qui exécutera le script à un intervalle régulier.
Vous pourrez définir la fréquence d’exécution du script en fonction de vos besoins, pour ajouter un crontab, utilisez la commande 'crontab -e'.
Puis indiquez la fréquence, en fonction de vos préférences :
# Toutes les heures @hourly /bin/bash /srv/d_nomdudisque/scripts/checkdisk.sh # Tous les jours @daily /bin/bash /srv/d_nomdudisque/scripts/checkdisk.sh #Toutes les semaines @weekly /bin/bash /srv/d_nomdudisque/scripts/checkdisk.sh
Pour en savoir plus sur l'utilisation des tâches cron :
http://fr.wikipedia.org/wiki/Crontab#Exemples
Une fois la tâche cron configurée, vous recevrez un mail d'alerte quand le disque aura atteint un certain quota. La valeur 'alert_quota' est à définir en fonction de la taille de vos disques.