creation de sys_check.sh
This commit is contained in:
@@ -90,4 +90,6 @@ systemctl restart fail2ban
|
||||
# --- 9. RAPPORT FINAL ---
|
||||
echo "Déploiement terminé de ${0} sur ${HOSTNAME}" | mail -s "Setup OK" "$DEST_EMAIL"
|
||||
|
||||
echo "✅ Terminé ! Teste avec : echo 'test' | mail -s 'Sujet simple' root"
|
||||
echo "✅ Terminé ! Teste avec : echo 'test' | mail -s 'Sujet simple' root"
|
||||
|
||||
rm ${0}
|
||||
|
||||
72
servers/linux/sys_check.sh
Normal file
72
servers/linux/sys_check.sh
Normal file
@@ -0,0 +1,72 @@
|
||||
#!/bin/bash
|
||||
|
||||
# --- CONFIGURATION ---
|
||||
THRESHOLD=90
|
||||
LOAD_THRESHOLD=5.0 # Alerte si la charge moyenne sur 1 min dépasse 5
|
||||
|
||||
# On envoie à 'root', le système fera la redirection grâce aux aliases
|
||||
DEST="root"
|
||||
|
||||
HOST=$(hostname)
|
||||
|
||||
# --- INITIALISATION DU RAPPORT ---
|
||||
REPORT=""
|
||||
ALERT=false
|
||||
|
||||
# 1. CHECK DISQUE (OCTETS)# On envoie à 'root', le système fera la redirection grâce aux aliases
|
||||
DISK_USAGE=$(df / | awk 'NR==2 {print $5}' | sed 's/%//')
|
||||
if [ "$DISK_USAGE" -gt "$THRESHOLD" ]; then
|
||||
REPORT="${REPORT}⚠️ DISQUE : $DISK_USAGE% utilisé\n"
|
||||
ALERT=true
|
||||
fi
|
||||
|
||||
# 2. CHECK INODES (Nombre de fichiers)
|
||||
# Crucial : un disque peut être vide en Go mais plein en inodes (trop de petits fichiers)
|
||||
INODE_USAGE=$(df -i / | awk 'NR==2 {print $5}' | sed 's/%//')
|
||||
if [ "$INODE_USAGE" -gt "$THRESHOLD" ]; then
|
||||
REPORT="${REPORT}⚠️ INODES : $INODE_USAGE% utilisé (Trop de fichiers !)\n"
|
||||
ALERT=true
|
||||
fi
|
||||
|
||||
# 3. CHECK RAM
|
||||
RAM_USAGE=$(free | grep Mem | awk '{print int($3/$2 * 100)}')
|
||||
if [ "$RAM_USAGE" -gt "$THRESHOLD" ]; then
|
||||
REPORT="${REPORT}⚠️ RAM : $RAM_USAGE% utilisé\n"
|
||||
ALERT=true
|
||||
fi
|
||||
|
||||
# 4. CHECK SWAP
|
||||
# Si le swap est utilisé à plus de 50%, le serveur commence à ramer sévèrement
|
||||
SWAP_TOTAL=$(free | grep Swap | awk '{print $2}')
|
||||
if [ "$SWAP_TOTAL" -gt 0 ]; then
|
||||
SWAP_USAGE=$(free | grep Swap | awk '{print int($3/$2 * 100)}')
|
||||
if [ "$SWAP_USAGE" -gt 50 ]; then
|
||||
REPORT="${REPORT}⚠️ SWAP : $SWAP_USAGE% utilisé (Saturation RAM imminente)\n"
|
||||
ALERT=true
|
||||
fi
|
||||
fi
|
||||
|
||||
# 5. CHECK CHARGE CPU (Load Average)
|
||||
CPU_LOAD=$(uptime | awk -F'load average:' '{ print $2 }' | cut -d',' -f1 | xargs)
|
||||
if (( $(echo "$CPU_LOAD > $LOAD_THRESHOLD" | bc -l) )); then
|
||||
REPORT="${REPORT}🔥 CPU LOAD : $CPU_LOAD (Serveur surchargé)\n"
|
||||
ALERT=true
|
||||
fi
|
||||
|
||||
# 6. CHECK SERVICES CRITIQUES (Exemple : Fail2Ban et Docker)
|
||||
SERVICES=("fail2ban" "ssh" "docker")
|
||||
for SVC in "${SERVICES[@]}"; do
|
||||
if ! systemctl is-active --quiet "$SVC"; then
|
||||
REPORT="${REPORT}❌ SERVICE : $SVC est ARRÊTÉ\n"
|
||||
ALERT=true
|
||||
fi
|
||||
done
|
||||
|
||||
# --- ENVOI DE L'ALERTE ---
|
||||
if [ "$ALERT" = true ]; then
|
||||
# On ajoute un récapitulatif rapide à la fin
|
||||
FULL_BODY="Détails de l'alerte pour $HOST :\n\n$REPORT\n---\nDate: $(date)"
|
||||
|
||||
# Grâce à ton wrapper msmtp, le sujet sera préfixé automatiquement par [$HOSTNAME]
|
||||
echo -e "$FULL_BODY" | mail -s "ALERTE RESSOURCES" "$DEST_EMAIL"
|
||||
fi
|
||||
Reference in New Issue
Block a user