Et si on faisait un peu de Monit oring

Monit est un outil de surveillance de services. En cas de défaillance de ceux-ci il peut effectuer diverses opérations tel qu’un redémarrage mais il pourrait aussi alerter l’administrateur du système.

Pour l’installation celui-ci étant dans les dépôts officiels de Debian c’est donc chose facile.

apt install monit

Il nous faut donc le configurer maintenant.

nano /etc/monit/monitrc
set alert votre@boitemail.com
set httpd port 2812 and
 allow admin:monit # require user 'admin' with password 'monit'
 allow @monit # allow users of group 'monit' to connect (rw)
 allow @users readonly # allow users of group 'users' to connect readonly

Dans la première partie je n’ai édité que l’adresse de réception des mails et la partie authentification.

Ensuite je m’attaque à la partie monitoring proprement dite.

En premier je check la charge de mon système afin qu’il m’alerte si elle est trop élevée.

check system nomdevotrehôte
 if loadavg (1min) > 4 then alert
 if loadavg (5min) > 2 then alert
 if memory usage > 75% then alert
 if swap usage > 25% then alert
 if cpu usage (user) > 70% then alert
 if cpu usage (system) > 50% then alert
 if cpu usage (wait) > 40 % then alert

Pour la suite j’ai fais simple j’ai repris le pid pour la plupart des applications que je voulais suivre.

Ici je demande à monit qu’il m’avertisse si ma partition dépasse 85% de son espace.

check device vda1 with path /dev/vda1
 if space usage > 85% then alert
 group system

Ici je vérifie que fail2ban est bien lancé si il ne l’est pas on le redémarre.

check process fail2ban with pidfile /var/run/fail2ban/fail2ban.pid
 start program = "/etc/init.d/fail2ban start"
 stop program = "/etc/init.d/fail2ban stop"
 if failed unixsocket /var/run/fail2ban/fail2ban.sock then restart
 if 5 restarts within 5 cycles then timeout

Un peut plus pour nginx, si une écoute vérifie que localhost réponds bien si non on restart, si l’utilisation du processeur est supérieure à 40 % durant 2 cycles il envoie un petit mail, si l’utilisation est supérieur à 5 cycles on le redémarre.

check process nginx with pidfile /var/run/nginx.pid
 start program = "/etc/init.d/nginx start"
 stop program = "/etc/init.d/nginx stop"
 if failed host 127.0.0.1 port 80 then restart
 if cpu is greater than 40% for 2 cycles then alert
 if cpu > 60% for 5 cycles then restart

Pour php c’est du même style.

check process php7.0-fpm with pidfile /run/php/php7.0-fpm.pid
 start program = "/etc/init.d/php7.0-fpm start"
 stop program = "/etc/init.d/php7.0-fpm stop"
 if cpu is greater than 50% for 2 cycles then alert
 if cpu > 80% for 5 cycles then restart
 if 10 restarts within 10 cycles then timeout

Capture

On peut tester ça configuration en faisant.

monit -t

Il y a pas mal de doc sur le site de monit qui vous permettra de pousser plus profondément le monitoring.