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 est Monit comme vous allez le voir car ce dernier vous alerte lorsqu’un problème survient sur votre serveur, mais il essaye 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…
Pour commencer, il faut installer le paquet.
apt-get install monit
Configuration du démon
set daemon 900 set logfile syslog facility log_daemon set httpd port 8080 and allow user:pass set alert [email protected] set mailserver localhost set mail-format { from: [email protected] subject: [monit] $SERVICE: $EVENT } set eventqueue basedir /home/log/monit slots 100 include /etc/monit/conf.d/*
- daemon : Fréquence entre deux contrôles exprimé en secondes (ici 15 minutes).
- httpd : Serveur web vers lequel on pourra monitorer en temps réelle ce qui se passe. user:pass sont à changer selon vos désires.
- alert : Adresse email vers laquelle envoyer une alerte.
- eventqueue : Fichier contenant les alertes n’ayant pas put être envoyer.
Configuration de Monit et des services à surveiller
Nous allons créer un fichier de configuration par service a surveiller. Ces fichiers seront dans le dossier /etc/monit/config.d/
Apache2 (/etc/monit/conf.d/apache2)
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
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 !
Share on Facebook