Skip to main content
monit_logo_ahmed_waguei.com

Monit pour surveiller gratuitement vos serveurs

Avoir la responsabilité d’un serveur (de production) sous la main n’est pas chose aisée. Car il faut en tout temps être en mesure d’assurer la disponibilité des ressources et la sécurité des services qui y sont hébergés.

Mais il ne suffit pas juste de surveiller l’infrastructure. En effet, pour être totalement efficace, il faut aussi pouvoir rapidement réagir en cas de pépin. Sachant que malgré tous les efforts et la bonne volonté, les soucis finissent toujours par arriver. Alors comment être proactif dans ce contexte pour mettre les chances de son côté avant que les utilisateurs ne soient durement impactés? La réponse est Monit.

C’est un outil simple qui vous permettra de monitorer vos serveurs (sous BSD, Linux, MacOS) et vous alerter par email. Mais Monit se distingue en permettant d’automatiser les actions à réaliser lorsqu’un défaut est détecté. Que ce soit des fichiers, des répertoires entiers, des processus, des scripts, des accès réseaux, des protocoles ou simplement des ressources systèmes (RAM, disque, CPU), vous avez une large palette d’actions afin de vous assurer que vos serveurs web, messagerie, FTP, base de données, etc. sont dans le bon état.

Configurer Monit se fait facilement via son langage intuitif. Ci-dessous quelques exemples de configuration:

Lancer automatiquement un processus

check process apache with pidfile /var/run/httpd.pid      
      start program = "/etc/init.d/apache2 start" 
      stop program = "/etc/init.d/apache2 stop"

Dans cet exemple, on demande à Monit de surveiller le processus apache situé à l’adresse /var/run/httpd.pid. Puis on lui indique comment le démarrer (start program) s’il constate que ce dernier ne tourne plus.  Simple et efficace.

Surveiller les ressources systèmes

check process apache with pidfile /var/run/httpd.pid 
      if cpu > 95% for 2 cycles then alert 
      if total cpu > 99% for 10 cycles then restart 
      if memory > 50 MB then alert 
      if total memory > 500 MB then restart 
      if disk read > 10 MB/s for 2 cycles then alert

Ici on effectue divers contrôles sur l’utilisation des ressources du processeur, la RAM et l’espace disque par le processus apache. Puis en cas de dépassement des seuils fixés, on alerte ou redémarre (restart) le processus.

Ecouter les interfaces réseau

check network eth0 with address 10.0.1.3 
      start program = '/sbin/ifup eth0' 
      stop program = '/sbin/ifdown eth0' 
      if failed link then restart

Dans cet autre cas, il est demandé à Monit de surveiller l’interface réseau eth0 ayant pour adresse 10.0.1.3 puis de démarrer ou redémarrer l’interface en cas de problème. A noter que la commande stop program permet justement de redémarrer (stop + start).

Vérifier qu’un site est accessible

check host mmonit.com with address mmonit.com 
      if failed port 80 protocol http then alert 
      if failed port 443 protocol https then alert 

Voici le cas de figure d’un site hébergé par un tiers, qu’on pourrait traduire par: Est-ce que le site mmonit (mmonit.com) est accessible en http (port 80) et https (port 443)? Si l’une des réponses est non (failed) alors préviens moi. Par ailleurs, si le site était sur nos propres serveurs, nous pourrions juste rajouter une ligne pour redémarrer le serveur web.

Tester le serveur de base de données

check host localhost with address 127.0.0.1 
      if failed ping then alert 
      if failed port 3306 protocol mysql then alert

Un autre exemple dans lequel Monit ping la machine locale (localhost) et lance une alerte en cas d’échec. Pareil pour le port 3306 du protocol mysql.

Observer les modifications de fichiers

check file apache with path /usr/sbin/httpd 
      if failed checksum then alert 
      if failed uid root then alert 
      if failed gid root then alert 
      if failed permission 755 then alert

Ceci est une autre de mes fonctions préférées. Elle consiste à alerter pour toute modification effectuée sur un fichier sensible. Que cela concerne la somme de contrôle, l’utilisateur, le groupe ou les permissions

Monit est open source et sous licence publique générale GNU. Vous trouverez ici de nombreux autres exemples de configuration directement fonctionnels. Cet outil est administrable et les résultats sont consultables directement en ligne de commande, via une interface web ou sur mobile.

N’hésitez pas à me dire en commentaire vos outils de surveillance préférés que j’y jette un œil.

Partager :

Ahmed WAGUEI

Internet & Movies lover. Sleep & Food master.