Monit est une application permettant de surveiller l'état des services (notamment http, smtp, ftp, ssh, mysql, etc...) par une interface web, et de notifier l'administrateur si besoin (trop grande charge cpu, redémarrage, indisponibilité...).

J'ai découvert par hasard ce concurrent open source de zabbix et nagios, il est beaucoup plus simple à configurer mais bon il offre moins d'options.

L'interface web :

monit-interface jpeg

Téléchargement :

Url du site de Monit : http://mmonit.com/monit/download/

cd /opt/SOURCES
wget http://mmonit.com/monit/dist/monit-5.0.3.tar.gz
tar xvzf monit-5.0.3.tar.gz

Installation :

cd monit-5.0.3
mkdir /opt/monit503
ln -s /opt/monit503 /opt/monit
./configure --prefix=/opt/monit --with-ssl
make
make install
cd /opt/monit
mkdir /opt/monit/etc
cp -a monitrc /opt/monit/etc/
vi /opt/monit/etc/monitrc

Confguration :

Le fichier de configuration principal est donc /opt/monit/etc/monitrc

Voici un exemple du contenu :

set daemon  60           # check services at 2-minute intervals
set logfile syslog facility log_daemon
set idfile /opt/monit/var/.monit.id
set statefile /opt/monit/var/.monit.state
set mailserver localhost,               # primary mailserver
set mail-format { from: monit@system-linux.eu }
set alert admin@system-linux.eu                      # receive all alerts
set httpd port 2812 and
     allow administrateur:votre-password      # require user 'admin' with password 'monit'
check system localhost
   if loadavg (1min) > 4 then alert
   if loadavg (5min) > 2 then alert
   if memory usage > 75% then alert
   if cpu usage (user) > 70% then alert
   if cpu usage (system) > 30% then alert
   if cpu usage (wait) > 20% then alert
check process apache with pidfile /opt/httpd/logs/httpd.pid
     start program = "/etc/init.d/httpd start" with timeout 60 seconds
     stop program  = "/etc/init.d/httpd stop"
     if cpu > 70% for 2 cycles then alert
     if cpu > 80% for 5 cycles then restart
     if totalmem > 400.0 MB for 5 cycles then restart
     if children > 350 then restart
     if loadavg(5min) greater than 10 for 8 cycles then stop
     if failed host www.system-linux.eu port 80 protocol http
     then restart

Configuration du script d'init :

cp -a /opt/SOURCES/monit-5.0.3/contrib/rc.monit /etc/init.d/
cd /etc/init.d/
mv rc.monit monit
vi monit (à modifier en concequence selon votre installation, (chemin des fichiers et dossiers etc...)

Les droits et sécurité :

chown -R root: /opt/monit/ *
chown root: /etc/init.d/monit

Interface web :

Elle est sous la forme :

http://nom-serveur:2312

Exemple de check à ajouter dans votre fichier /opt/monit/etc/monitrc :

# MySQL
check process mysqld 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 host 127.0.0.1 port 3306 then restart
if 5 restarts within 5 cycles then timeout

# SSH
check process sshd with pidfile /var/run/sshd.pid
group ssh
start program "/etc/init.d/ssh start"
stop program "/etc/init.d/ssh stop"
if failed host 127.0.0.1 port 222 protocol ssh then restart
if 5 restarts within 5 cycles then timeout

# 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

# FTP
check process proftpd with pidfile /var/run/proftpd.pid
group ftp
start program = "/etc/init.d/proftpd start"
stop program  = "/etc/init.d/proftpd stop"
if failed port 21 protocol ftp then restart
if 5 restarts within 5 cycles then timeout

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

# Named
check process named with pidfile /opt/bind9/var/run/named/named.pid
group bind9
start program = "/etc/init.d/bind9 start"
stop  program = "/etc/init.d/bind9 stop"
if failed port 53 protocol dns then restart
if 5 restarts within 5 cycles then timeout

Comme vous pouvez le constater la syntaxe de monit est très abordable et les exemples facile à trouver sur le site officiel.

Vous avez aussi la possibilité de vérifier la syntaxe de votre fichier de configuration après l'avoir modifié, por cela utilisez la commande suivante :

/etc/init.d/monit syntax

Et si vous voulez aller plus loin :

http://mmonit.com/monit/documentation/monit.html