Surveiller ses services avec Monit : un watchdog simple et efficace pour VPS


Sur un serveur, les services peuvent tomber sans prévenir : Apache crash, MySQL ne répond plus, le disque se remplit… Monit est un outil léger, facile à configurer et capable de surveiller, redémarrer et alerter automatiquement en cas de problème.

C’est un excellent choix pour un auto-hébergeur ou un admin VPS qui veut une supervision sans complexité.


🧩 Qu’est-ce que Monit ?

  • Petit démon écrit en C
  • Supervise services, fichiers, processus, ressources système
  • Redémarre automatiquement ce qui plante
  • Envoie des alertes e-mail
  • Propose une interface web locale facultative

⚙️ Installation sur Debian / Ubuntu

sudo apt update
sudo apt install monit -y

Démarrer et activer au boot :

sudo systemctl enable --now monit

📁 Configuration de base

Fichier principal : /etc/monit/monitrc

Décommente la section suivante pour recevoir des alertes :

set mailserver localhost
set alert tonmail@tondomaine.fr

Tu peux tester l’envoi avec :

echo "Test Monit" | mail -s "Monit OK" tonmail@tondomaine.fr

🧪 Exemple de surveillance : Apache

Créer un fichier /etc/monit/conf-enabled/apache2 :

check process apache2 with pidfile /run/apache2/apache2.pid
    start program = "/usr/sbin/service apache2 start"
    stop program  = "/usr/sbin/service apache2 stop"
    if failed port 80 protocol http then restart
    if 5 restarts within 5 cycles then timeout

Activer la configuration :

sudo monit reload

📊 Surveiller la charge, la mémoire, le disque

Dans monitrc, ajouter :

check system localhost
    if loadavg (1min) > 2.5 then alert
    if memory usage > 85% then alert
    if cpu usage (user) > 70% then alert
    if space / > 90% then alert

🌐 Interface web locale

Tu peux activer l’interface web pour consulter les services :

set httpd port 2812
    use address 127.0.0.1  # ou 0.0.0.0 pour accès externe
    allow admin:motdepassefort

Puis :

sudo systemctl restart monit

Accès via : http://localhost:2812


🔁 Autres services surveillables

  • MySQL :
check process mysql with pidfile /var/run/mysqld/mysqld.pid
    start program = "/etc/init.d/mysql start"
    stop program = "/etc/init.d/mysql stop"
    if failed host 127.0.0.1 port 3306 then restart
  • Nginx, Redis, Fail2ban, Docker, SSH, etc.
  • Fichiers : taille, date, permissions, contenu

✅ Avantages de Monit

  • 📦 Léger et natif (pas de conteneur, pas de dépendances)
  • ⏱️ Réagit rapidement (par défaut toutes les 30 s)
  • 🧠 Facile à écrire, facile à lire
  • 🔐 Fonctionne sans interface graphique

🎯 Parfait pour auto-hébergeur solo, VPS minimaliste, ou devops pressé.