Maintenant que le serveur fonctionne bien, il est important qu’un chef d’orchestre surveille tout le petit monde et fasse diverses contrôles à votre place.
Le logiciel miracle s’appel Monit et comme vous allez le voir ce dernier va vous alerte lorsqu’un problème survient sur votre serveur. Mais il ne fait pas qu’alerte ! En effet, il va essayer aussi de rétablir la situation. Cela peut être pratique lorsque le service sshd tombe et que vous n’avez pas accès à la machine physiquement…
Installation de monit
Pour commencer, il faut installer le paquet de manière classique comme ci-dessous.
apt-get install monit
Configuration du démon
Le fichier de configuration principal se trouve ici : /etc/monit/monitrc et va vous permettre de régler plusieurs options importantes.
Intervalle entre deux vérifications du système
Pour commencer nous allons définir que la vérification du système par monit se fera toutes les 15 minutes.
set daemon 900
L’option « with start delay » permet de définir un temps d’attente entre le démarrage du système et la première vérification.
Adresse mail à alerter
Nous allons définir l’adresse mail vers laquelle monit enverra un email à chaque fois qu’il y a un problème. Pour cela, dé-commentez la ligne ci-dessous.
set alert [email protected]
Vous pouvez fouiller dans le fichier de configuration pour trouver comment affiner l’envoi de mail et ne recevoir que sous certaines conditions.
Configuration de l’interface web
Si vous le désirez, monit peut vous permettre d’accéder à une page web (avec ou sans authentification) afin de voir une interface listant les services qu’il surveille et leur état. Pour configurer il faut dé-commenter les lignes suivantes :
set httpd port 2812 and allow admin:monit
Pensez à remplacer « admin » et « monit » par le login et le mot de passe que vous souhaitez mettre.
Configuration des services à surveiller
Nous allons créer un fichier de configuration par service a surveiller. Ces fichiers seront à créer dans le dossier /etc/monit/config.d/.
Apache2 (/etc/monit/conf.d/apache2)
check process apache with pidfile /var/run/apache2.pid group www start program = "/etc/init.d/apache2 start" stop program = "/etc/init.d/apache2 stop" if cpu > 60% for 2 cycles then alert if cpu > 90% for 5 cycles then restart if totalmem > 500 MB for 5 cycles then restart if children > 250 then restart if loadavg(5min) greater than 10 for 8 cycles then stop if 3 restarts within 5 cycles then timeout
MySQL (/etc/monit/conf.d/mysql)
check process mysql with pidfile /var/run/mysqld/mysqld.pid group database start program = "/etc/init.d/mysql start" stop program = "/etc/init.d/mysql stop" if failed unix "/var/run/mysqld/mysqld.sock" then restart if failed host 127.0.0.1 port 3306 then restart if 5 restarts within 5 cycles then timeout
Pure-FTPD (/etc/monit/conf.d/pureftpd)
check process vsftpd with pidfile /var/run/pure-ftpd/pure-ftpd.pid start program = "/etc/init.d/pure-ftpd-mysql start" stop program = "/etc/init.d/pure-ftpd-mysql stop" if failed port 21 protocol ftp then restart if 5 restarts within 5 cycles then timeout
SSHd (/etc/monit/conf.d/sshd)
check process sshd with pidfile /var/run/sshd.pid start program "/etc/init.d/ssh start" stop program "/etc/init.d/ssh stop" if failed port 22 protocol ssh then restart if 5 restarts within 5 cycles then timeout
Fail2ban(/etc/monit/conf.d/fail2ban)
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
Rsyslog (/etc/monit/conf.d/rsyslog)
group system start program = "/etc/init.d/rsyslog start" stop program = "/etc/init.d/rsyslog if 5 restarts within 5 cycles then timeout
Activer Monit
Pour terminer il faut activer Monit en modifiant le fichier /etc/default/monit
START=yes
Ou si vous avez une vieille version de monit il faudra mettre :
startup=1
Puis vous pouvez le redémarrer et si tout ce passe bien vous devriez avoir un mail vous informant qu’il a bien démarrer.
/etc/init.d/monit restart
Et voila, Monit va surveiller pour vous votre serveur et envoyer des mails d’alerte si un problème survient !