Monit surveiller et agir sur les services de votre serveur

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 sysadm@foo.bar

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

Postfix (/etc/monit/conf.d/postfix)

check process postfix with pidfile /var/spool/postfix/pid/master.pid
  group mail
  start program = "/etc/init.d/postfix start"
  stop  program = "/etc/init.d/postfix stop"
  if failed port 25 protocol smtp then restart
  if 5 restarts within 5 cycles then timeout
  depends on postfix_rc

check file postfix_rc with path /etc/init.d/postfix
  group mail
  if failed checksum then unmonitor
  if failed permission 755 then unmonitor
  if failed uid root then unmonitor
  if failed gid root then unmonitor

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 !

Laisser un commentaire