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
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.