Créer une alerte e-mail en cas de pic CPU, RAM ou bande passante sur votre serveur


Sur un serveur auto-hébergé, il est essentiel d’être averti en temps réel en cas de problème : charge CPU excessive, saturation de la mémoire, pic réseau anormal… Avec une alerte par e-mail, tu peux intervenir avant que le serveur ne tombe.

Voici un guide simple pour mettre en place un système d’alerte efficace, sans interface graphique ni solution lourde.


🎯 Objectif

Être prévenu automatiquement par e-mail :

  • si la charge CPU dépasse un seuil
  • si la RAM utilisée est proche de 100 %
  • si la bande passante monte en flèche
  • éventuellement, en cas de disque plein

🛠️ Méthode 1 : script shell + cron + mail (simple et efficace)

1. Installer les outils nécessaires

sudo apt update
sudo apt install mailutils -y

2. Créer un script de monitoring : /usr/local/bin/alertes.sh

#!/bin/bash

TO="tonmail@domaine.fr"

# CPU
cpu_load=$(awk '{print $1}' /proc/loadavg)
if (( $(echo "$cpu_load > 2.0" | bc -l) )); then
  echo "Charge CPU élevée : $cpu_load" | mail -s "🚨 CPU ALERT sur $(hostname)" $TO
fi

# RAM
ram_used=$(free | awk '/Mem/ {printf "%.2f", $3/$2 * 100}')
if (( $(echo "$ram_used > 85.0" | bc -l) )); then
  echo "Mémoire utilisée : $ram_used%" | mail -s "🚨 RAM ALERT sur $(hostname)" $TO
fi

# Disque
disk_used=$(df -h / | awk 'NR==2 {print $5}' | sed 's/%//')
if [ "$disk_used" -gt 90 ]; then
  echo "Espace disque utilisé : $disk_used%" | mail -s "🚨 DISK ALERT sur $(hostname)" $TO
fi

🔐 N’oublie de rendre le script exécutable :

sudo chmod +x /usr/local/bin/alertes.sh

3. Lancer ce script régulièrement via cron

sudo crontab -e

Ajoute :

*/5 * * * * /usr/local/bin/alertes.sh

📬 Tu recevras un e-mail toutes les 5 minutes si une alerte est déclenchée.


🛠️ Méthode 2 : avec Monit (plus flexible)

  • Permet de configurer des alertes par e-mail sur n’importe quel processus
  • Interface web optionnelle
  • Recommandée si tu veux surveiller plusieurs services en plus du système
sudo apt install monit

Tu peux ensuite définir des règles comme :

check system localhost
    if loadavg (1min) > 2.0 then alert
    if memory usage > 85% then alert
    if space / > 90% then alert

Puis configure ton adresse email dans /etc/monit/monitrc.


📈 Bonus : surveiller la bande passante

Avec vnstat, tu peux détecter des anomalies réseau.

sudo apt install vnstat
vnstat -d

Pour les alertes automatiques, intègre vnstat dans ton script et déclenche une alerte si le trafic dépasse X Go/jour.


✅ En résumé

Tu peux être notifié :

  • sans interface graphique,
  • sans Prometheus ou Zabbix,
  • uniquement avec bash, mail et cron.

🎯 Les alertes simples sont souvent les plus fiables.