Un court article cette semaine pour vous présenter Monit, un outil de monitoring de votre serveur. Je l’utilise au quotidien sur mes serveurs perso et il faut dire qu’il fait très bien le boulot. Il est capable de monitorer des services, le système (ram, CPU…), les disques (présence/absence, espace disponible…). Il est aussi capable de lancer des scripts ce qui permet de lui faire monitorer presque n’importe quoi. La configuration est très lisible (mais pas très simple à écrire), il propose par défaut une interface d’admin permettant de surveiller les éléments monitorés et de les arrêter/relancer.
Quelques exemples de configurations
Un check basique
Un petit check sur un process : si le process identifié par le PID est mort, il est automatiquement relancé.
check process apache with pidfile /var/run/httpd.pid
restart program = "/etc/init.d/apache2 restart"
if failed port 80 protocol http then restart
Gestion complète d’un processus
Il est bien sur possible de rendre le comportement un peu plus intelligent en attendant un certain nombre d’échecs avant de relancer le processus. Le fait d’ajouter aussi les commandes de lancement et d’arrêt permettra de piloter simplement le process à travers l’interface de Monit.
check process apache with pidfile /var/run/httpd.pid
start program = "/etc/init.d/apache2 start"
stop program = "/etc/init.d/apache2 stop"
restart program = "/etc/init.d/apache2 restart"
if failed port 80 protocol http for 2 cycles then restart
Les alertes
Il est même possible de monitorer le comportement du processus et de lancer des alertes.
check process apache with pidfile /var/run/httpd.pid
[...]
if cpu > 95% for 2 cycles then alert
if memory > 50 MB then alert
if total memory > 500 MB then restart
Le mécanisme d’alerte est configurable, pour moi c’est un simple mail qui m’est envoyé.
Surveillance des disques, fichiers et répertoires
check filesystem disk2 with path /dev/disk2
if space usage > 95% then alert
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
check directory incomming with path /var/data/ftp
if timestamp > 1 hour then alert
Le couteau suisse, le script perso
check program salesreport with path /var/monit/programs/sales.sh
every "* 8-9 * * 1-5"
if status != 0 then alert
Documentation
C’est un aperçu assez rapide de Monit, plongez-vous dans la documentation qui même si elle n’est pas très jolie permet de réaliser plein de check utiles.
Tous les exemples sont tirés de la présentation officielle de Monit.