On commence donc par l'installer avec la commande traditionnelle

aptitude install monit

On va maintenant pouvoir commencer la configuration, en éditant le fichier /etc/monit/monitrc

Voici les lignes les plus importantes à dé commenter et éditer, selon vos besoins

à quelle fréquence (en secondes) doivent se faire les vérification

set daemon 300

fichier de log

set logfile /var/log/monit.log

pour les alarmes, quel serveur mail utilise t on

set mailserver localhost

quelle adresse d'expediteur pour envoyer un mail d'alerte

set mail-format { from: monitoring@mondomaine.com }

quelle adresse de destination

set alert alarms@mondomaine.com

on définit les autorisation pour l'accès à l'interface web
ici, est autorisé l'accès depuis localhost (donc en local, 127.0.0.) ainsi que depuis l'adresse 192.168.0.2
Et on définit un login admin et un mot de passe mot_de_passe

set httpd port 81 and
use address 192.168.0.1
allow localhost
allow 192.168.0.2
allow admin:mot_de_passe

Maintenant, on va définir les services à surveiller

apcupsd, pour gèrer mon onduleur

check process apcupsd with pidfile /var/run/apcupsd.pid
start program = "/etc/init.d/apcupsd start"
stop program = "/etc/init.d/apcupsd stop"
if failed host 192.168.0.1 port 3551 type TCP with timeout 5 seconds then restart

Bind, pour le DNS

check process Bind with pidfile /var/run/bind/run/named.pid
start program = "/etc/init.d/bind9 start"
stop program = "/etc/init.d/bind9 stop"
if failed host 127.0.0.1 port 53 type tcp protocol dns with timeout 5 seconds then restart
if failed host 127.0.0.1 port 53 type udp protocol dns with timeout 5 seconds then restart

Dhcp, pour l'attribution des adreses IP sur le réseau local

check process DHCP3-Server with pidfile /var/run/dhcp3-server/dhcpd.pid
start program = "/etc/init.d/dhcp3-server start"
stop program = "/etc/init.d/dhcp3-server stop"
if failed host 192.168.0.1 port 67 type udp with timeout 5 seconds then alert

Ntp, pour la synchronisation automatique de la date et heure

check process NTPD with pidfile /var/run/ntpd.pid
start program = "/etc/init.d/ntp start"
stop program = "/etc/init.d/ntp stop"
if failed port 123 type udp with timeout 8 seconds then restart

Ssh, pour l'administration à distance

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 host 192.168.0.254 port 222 protocol ssh with timeout 3 seconds then restart

Postfix, pour les emails

check process Postfix with pidfile /var/spool/postfix/pid/master.pid
start program = "/etc/init.d/postfix start"
stop program = "/etc/init.d/postfix stop"
if failed port 25 protocol smtp with timeout 10 seconds then restart

Et enfin apache, pour les pages web

check process Apache with pidfile /var/run/apache2/apache2.pid
start program = "/etc/init.d/apache2 start"
stop program = "/etc/init.d/apache2 stop"
if failed port 80 protocol http with timeout 10 seconds then restart

Voila, comme vous le constatez, ces règles sont écrites dans un anglais assez naturel et donc facilement compréhensible. :)
A chaque fois, on décrit le nom du process à surveiller, ainsi que le port, éventuellement un timeout, et enfin une action à effectuer.
Ainsi, si par exemple on fait une bourde et qu'on coupe le ssh, monit le relancera et vous enverra gentiment un email pour vous prévenir.
Cela dit, les exemples ci dessus sont issus de ma configuration, mais on peut monitorer pas mal d'autres choses avec monit, telles que l'espace disque, la ram utilisée, les permission ou la date d'un fichier/dossier...

Une fois configuré, on lance le service

service monit start

ou

/etc/init.d/monit stat

Voici à quoi ressemble l'interface web

monit_http

Ca fait un bout de temps que je l'utilise et il a toujours bon fonctionné, et m'a tiré une ou deux fois d'une mauvaise situation...
Enfin, avec monit, associé à Munin (qui a pleins de plugins qu'on peut développer soi même, en perl, en script shell, en php... ) pour avoir des graphs, on a deja une bonne vue d'ensemble de notre machine.
Ceci sera l'objet d'un prochain article expliquant comment l'installer et le configurer ;)