Offre Durée limitée : -10% sur tout le site avec le code WELCOME10

Configurer des alertes de monitoring sur un VPS Linux : CPU, mémoire et disque

Mis à jour le 2 octobre 2026 5 min de lecture 8 sections

Un VPS Linux peut saturer sa mémoire, consumer 100 % de son CPU ou remplir son SSD sans le moindre avertissement — jusqu'à ce que le serveur de jeu s'arrête ou que l'hébergement web Nginx devienne indisponible. Mettre en place des alertes de monitoring sur les trois ressources critiques (CPU, mémoire et disque) permet à l'admin de recevoir une notification par e-mail dès qu'un seuil est dépassé, avant que la situation ne devienne critique pour les services hébergés.

Ce guide s'adresse à l'administrateur d'un VPS Linux chez ElypseCloud qui souhaite surveiller et gérer un serveur sans installer un outil de monitoring complet. Les configurations présentées utilisent Ubuntu 22.04/24.04 ; elles fonctionnent également sur Debian et Rocky Linux sans modification. Aucun daemon tiers n'est requis : un simple script Bash planifié par cron suffit pour administrer la surveillance de l'hébergeur.

Prérequis : lire l'usage des ressources en ligne de commande

Avant d'automatiser, il faut savoir lire les métriques directement depuis le shell. Trois commandes standard suffisent pour obtenir l'état instantané de votre serveur VPS Linux.

CPU : top et mpstat

Pour obtenir le pourcentage d'utilisation CPU en une seule mesure non interactive, utilisez :

# Pourcentage CPU utilisé (mode batch, 1 échantillon)
top -bn1 | grep "Cpu(s)" | awk '{print 100 - $8"%"}'

La colonne %id correspond au temps inactif (idle). En soustrayant ce chiffre de 100, on obtient le taux d'utilisation réel. Sur les serveurs multi-coeurs, mpstat du paquet sysstat fournit un relevé par coeur :

sudo apt install sysstat -y
mpstat 1 3

Trois mesures d'une seconde donnent une moyenne fiable et évitent les faux positifs. L'admin peut ensuite redémarrer les daemons ou ajuster les configurations si le taux reste élevé.

Mémoire : free et /proc/meminfo

La commande free -m affiche la mémoire en mégaoctets. Pour calculer le pourcentage utilisé :

free -m | awk 'NR==2 {printf "Memoire : %d Mo utilises / %d Mo total (%.1f%%)\n", $3, $2, $3*100/$2}'

Notez que Linux utilise la mémoire libre comme cache disque (colonnes buff/cache). La mémoire réellement disponible est MemAvailable dans /proc/meminfo. Le script de surveillance s'appuie sur cette valeur pour éviter les fausses alertes sur un serveur VPS sain dont le noyau gère bien le cache.

Disque SSD : df

La commande df -h liste les systèmes de fichiers montés avec leur occupation. Pour extraire le pourcentage d'utilisation du volume principal :

df -h / | awk 'NR==2 {print "Disque /:", $5, "utilise,", $4, "disponible"}'

Sur un serveur dédié, plusieurs partitions peuvent être surveillées : /, /home, /var ou les volumes LVM montés séparément. Les sauvegardes volumineuses (backup) et les logs non purgés sont les deux principales causes de saturation du SSD. Le script ci-dessous parcourt tous les systèmes de fichiers locaux pour couvrir ce cas.

Créer le script de surveillance

Créez le répertoire de scripts si nécessaire, puis le fichier principal :

sudo mkdir -p /opt/monitoring
sudo nano /opt/monitoring/check-resources.sh

Voici le contenu complet du script. Chaque section est séparée pour faciliter l'administration et les ajustements ultérieurs. Gérer un serveur VPS Linux efficacement passe par ces configs de seuils adaptées à votre charge réelle :

#!/bin/bash
# check-resources.sh - Surveillance CPU, memoire, disque SSD
# Envoi d'une alerte par e-mail si un seuil est depasse

# Config admin - ajustez les seuils a votre usage
SEUIL_CPU=85          # % d'utilisation CPU declenchant l'alerte
SEUIL_MEM=90          # % de memoire utilisee (hors cache) declenchant l'alerte
SEUIL_DISQUE=85       # % d'espace SSD utilise declenchant l'alerte
DESTINATAIRE="admin@votredomaine.com"
HOSTNAME_COURT=$(hostname -s)
LOGFILE="/var/log/monitoring.log"

DATE=$(date "+%Y-%m-%d %H:%M:%S")
ALERTES=""

# 1. CPU
CPU_IDLE=$(top -bn1 | grep "Cpu(s)" | awk '{print $8}' | tr -d '%us,')
CPU_UTIL=$(echo "100 - ${CPU_IDLE}" | bc | awk '{printf "%d", $1}')

if [ "${CPU_UTIL}" -ge "${SEUIL_CPU}" ]; then
  ALERTES="${ALERTES}[CPU] Utilisation : ${CPU_UTIL}% (seuil : ${SEUIL_CPU}%)\n"
fi

# 2. Memoire (via /proc/meminfo pour eviter les faux positifs du cache)
MEM_TOTAL=$(grep MemTotal /proc/meminfo | awk '{print $2}')
MEM_AVAILABLE=$(grep MemAvailable /proc/meminfo | awk '{print $2}')
MEM_USED=$(( MEM_TOTAL - MEM_AVAILABLE ))
MEM_PERCENT=$(( MEM_USED * 100 / MEM_TOTAL ))

if [ "${MEM_PERCENT}" -ge "${SEUIL_MEM}" ]; then
  ALERTES="${ALERTES}[MEM] Utilisation : ${MEM_PERCENT}% (seuil : ${SEUIL_MEM}%)\n"
fi

# 3. Disque SSD (tous les systemes de fichiers locaux, tmpfs exclu)
while IFS= read -r ligne; do
  USAGE=$(echo "${ligne}" | awk '{print $5}' | tr -d '%')
  POINT=$(echo "${ligne}" | awk '{print $6}')
  if [ "${USAGE}" -ge "${SEUIL_DISQUE}" ]; then
    ALERTES="${ALERTES}[DISQUE] ${POINT} : ${USAGE}% (seuil : ${SEUIL_DISQUE}%)\n"
  fi
done < <(df -Pl -x tmpfs -x devtmpfs -x squashfs | tail -n +2)

# Envoi de l'alerte si necessaire
if [ -n "${ALERTES}" ]; then
  CORPS="[${DATE}] Alertes ressources sur ${HOSTNAME_COURT} :\n\n${ALERTES}"
  echo -e "${CORPS}" | mail -s "[ALERTE] ${HOSTNAME_COURT} ressources critiques" "${DESTINATAIRE}"
  echo "[${DATE}] ALERTE envoyee : ${ALERTES}" >> "${LOGFILE}"
else
  echo "[${DATE}] OK - aucun seuil depasse." >> "${LOGFILE}"
fi

Rendez le script exécutable :

sudo chmod +x /opt/monitoring/check-resources.sh

Configurer l'envoi d'e-mail depuis le VPS

Le script utilise la commande mail du paquet mailutils. Vous avez besoin d'un agent de transport (MTA) pour relayer les messages. La solution recommandée pour un VPS Linux est postfix configuré comme relais SMTP sortant. Il s'agit d'un daemon léger qui tourne en arrière-plan et envoie les alertes via l'adresse IP de votre serveur.

# Installation des dépendances
sudo apt install postfix mailutils libsasl2-modules -y
# Choisir "Site Internet" lors de la configuration interactive de postfix

Pour utiliser un compte Gmail ou tout autre hébergeur SMTP externe (recommandé pour éviter les problèmes de réputation liés à l'adresse IP du VPS), ajoutez ces lignes à /etc/postfix/main.cf :

relayhost = [smtp.gmail.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_security_level = encrypt
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt

Créez le fichier d'identifiants (utilisez un mot de passe d'application Gmail, jamais votre mot de passe principal) :

sudo nano /etc/postfix/sasl_passwd
# Contenu attendu :
# [smtp.gmail.com]:587 votre@gmail.com:mot-de-passe-application

sudo postmap /etc/postfix/sasl_passwd
sudo chmod 600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
sudo systemctl restart postfix

Testez l'envoi avant d'aller plus loin :

echo "Test alerte monitoring" | mail -s "Test depuis $(hostname)" votre@gmail.com

Automatiser avec cron

Une vérification toutes les cinq minutes est un bon compromis entre réactivité et charge minimale sur le VPS Linux. Il est conseillé d'utiliser la crontab de root, car l'écriture dans /var/log/monitoring.log y est plus fiable :

sudo crontab -e

Ajoutez la ligne suivante :

# Surveillance ressources toutes les 5 minutes
*/5 * * * * /opt/monitoring/check-resources.sh

Pour vérifier que le script s'exécute sans erreur :

sudo /opt/monitoring/check-resources.sh
tail -20 /var/log/monitoring.log

Vous devriez voir une ligne OK - aucun seuil depasse. ou une alerte si votre serveur VPS est déjà sous pression.

Ajuster les seuils à votre usage

Les valeurs proposées (85 % CPU, 90 % mémoire, 85 % disque SSD) sont des points de départ pour gérer un serveur VPS Linux. Adaptez-les à votre charge habituelle :

  • Serveur de jeu FiveM ou Minecraft : le CPU peut atteindre 70-80 % lors des pics de connexion. Relevez le seuil CPU à 92-95 % pour éviter les faux positifs nocturnes. Consultez le guide diagnostiquer une surcharge CPU sur un serveur de jeu Linux pour identifier la cause après réception d'une alerte.
  • Serveur web Nginx ou Node.js : la mémoire est souvent la contrainte principale. Descendez le seuil mémoire à 80 % pour anticiper les fuites. Voir aussi le guide comprendre et gérer l'OOM Killer Linux pour les cas où le noyau tue des processus faute de mémoire.
  • Volume de logs ou backup actif : si /var/log est sur une partition séparée, elle peut se remplir rapidement. Consultez le guide configurer la rotation des journaux Linux pour gérer l'espace de logs de façon proactive.

Pour éviter les e-mails répétitifs lors d'une alerte persistante, ajoutez un fichier de verrou (lockfile). L'alerte ne s'envoie alors qu'une fois par heure tant que le seuil reste dépassé :

LOCKFILE="/tmp/monitoring-alerte.lock"
LOCK_TTL=3600  # secondes avant re-notification

if [ -n "${ALERTES}" ]; then
  MAINTENANT=$(date +%s)
  DERNIERE_ALERTE=0
  [ -f "${LOCKFILE}" ] && DERNIERE_ALERTE=$(cat "${LOCKFILE}")
  DELTA=$(( MAINTENANT - DERNIERE_ALERTE ))
  if [ "${DELTA}" -ge "${LOCK_TTL}" ]; then
    echo -e "${CORPS}" | mail -s "[ALERTE] ${HOSTNAME_COURT} ressources" "${DESTINATAIRE}"
    echo "${MAINTENANT}" > "${LOCKFILE}"
  fi
fi

Sécurité et firewall : protéger le daemon de monitoring

Si vous exposez ultérieurement un endpoint HTTP de monitoring (Netdata sur le port 19999, Prometheus sur le 9090), restreignez l'accès via nftables ou UFW. Ces ports ne doivent pas être accessibles depuis n'importe quelle adresse IP publique sans authentification. Un firewall correctement configuré limite l'exposition des daemons de monitoring, qui peuvent révéler des informations sensibles sur les configurations du serveur VPS.

Pour les serveurs avec Nginx comme proxy inverse devant le daemon de monitoring, pensez à ajouter une authentification HTTP basique dans la config Nginx et à limiter l'accès aux adresses IP autorisées.

Aller plus loin : Netdata et l'écosystème de monitoring

Le script Bash est suffisant pour la grande majorité des VPS Linux. Si votre infrastructure grandit (plusieurs serveurs VPS ou dédiés, métriques historiques, tableaux de bord), des outils dédiés permettent de gérer un serveur plus efficacement :

  • Netdata : daemon léger (moins de 50 Mo de RAM) avec interface web locale, alertes configurables et intégrations Slack et e-mail. S'installe en une commande depuis le site officiel de Netdata.
  • Prometheus et node_exporter : solution de référence pour les environnements multi-serveurs, associée à Grafana pour la visualisation. Bien adapté à un parc de serveurs dédiés bare metal ou de machines virtuelles Linux.
  • Services externes (UptimeRobot, BetterUptime) : surveillent la disponibilité HTTP/TCP depuis l'extérieur, indépendamment de l'état interne de votre VPS. Complète plutôt que remplace le monitoring interne.

Guides complémentaires de diagnostic

Une fois l'alerte reçue, la cause doit être identifiée rapidement :

Votre VPS Linux ElypseCloud est prêt à accueillir ce script de surveillance dès aujourd'hui. Découvrez nos offres VPS Linux avec accès SSH complet.

Voir les offres VPS Linux