../
--==[ PETITE PRESENTATION DE MONIT ]==--

configuration sommaire

Le démon MONIT assure une surveillance et un controle sur les services en cours d'execution.

- Il est donc capable de surveiller des fichiers, des processus, des ports, des machines, de l'espace disque et meme la somme de controle md5 d'un fichier !!!
- Il peut en outre relancer automatiquement ou sur intervention dans l'interface web, les services qui se sont arretés.
Son fichier de configuration est assez simple et trés bien commenté, sa mise en oeuvre n'est pas trop complexe, et pour couronner le tout, il est gratuit, que du bonheur donc.
- une interface web est aussi disponible, elle ne permet apparement pas de configurer le serveur, mais elle offre une vue synthetique de l'état des ressources surveillées, en cliquant, un détail de la ressource apparait et, selon celle ci, la possibilité de la demarrer/arreter/re-demarrer ou de ne plus "la monitorer"est offert.
- Les alertes sont remontées via mails et vers l'interface Web.

Pour les pressés ou les curieux, les captures d'écran de l'interface web sont en bas de la page.
#### le fichier surveillé dans la dernière capture est l'avi issue du rip illégale d'un dvd ne m'appartenant pas...oui monsieur :)
il a d'ailleur été rippé sous linux avec vobcopy et transcode, le film lui meme est un peu pourri mais bon...quant a la pertinance
d'une surveillance par moni d'un divx...on sait jamais, y a tellement de pirates sur le net ;-) ####



La partie technique


Console de monitoring de MONIT via http://serveur:2812


la package etait deja installé sur ma distribution, si ce n'est pas le cas, une connexion vers http://www.tildeslash.com/monit devrais résoudre le problème, pour un rpm, un rpm -ivh monit.*.rpm devrait suffire, et pour les sources, les traditionnels ./configure, make, make install.

- Le fichier de configuration, sous SuSE est situé ici --> /etc/monitrc
- le binaire monit est situé ici --> /usr/bin/monit
- Une possibilitée d'accès a l'interface Web via SSL existe, avec certificat coté serveur et client.(un README de la doc installée l'explique).
- Monit peut etre lancé et controlé par INIT, en renseignant de façon approprié le fichier /etc/inittab, c'est apparemment la directive "respawn"
qui est utile dans ce cas, car elle assure une relance automatique du démon.
- il supporte apparemment les "includes", qui permettent de ventiler la configuration sur plusieurs fichiers, utile en cas de grand nombre de règles.

D' aprés la doc les alertes peuvent etres associés aux évenements suivants:
  • un time out de servive
  • un arret de service
  • un port qui refuse une connexion
  • un changement de permission (fichier)
  • l'etat d'une ressource
  • la modification d'une somme de controle
  • le changement de la taille d'un fichier
  • le changement du "timestamp" (??? je sais pas ce que c'est :))
  • le lancement ou la relance d'un service
  • la modification de l'UID d'un fichier
  • la modification du GID d'un fichier
  • et si j'ai bien traduit, l'etat de surveillance d'une ressource par monit (a confirmer)

La modification d'une ressource surveillée se traduit (si le critère de surveillance correspond a la modification:)), a une des actions ci-dessous:
  • ALERT envoi de mail
  • RESTART redemarrage du service
  • STOP arret du service
  • EXEC execution d'une commande
  • UNMONITOR stop le monitoring

Voici un exemple de fichier de configuration:
il vient du mien, donc s'il y a des conneries...y en a certainement :)

  

## période de surveillance là , 120 secondes. 
 set daemon  120           

## facilité syslog (choix de la "verbosité" du démon). set logfile syslog facility log_daemon
## contenu du champ "FROM" dans le mail qui sera envoyé a l'admin set mail-format { from: monit@foo.bar }
## adresse du/des destinataire(s) a qui les alertes seront envoyées set alert antonio@verseau.athena
## choix du port d'écoute pour le serveur web (serveur qui permettra la consulation via un navigateur de la disponibilité des ressources). ## et, adresse d'écoute du serveur (localhost par défault). set httpd port 2812 and use address 192.168.0.3
## adresse IP autorisées a se connecter au serveur. allow 192.168.0.2 allow 192.168.0.3
## définition de la paire identifiant/mot de passe (admin/monit par défault) allow darkside:offdarkness ## c'est pas le vrai, vous inquietez pas, c'est pas mon genre les LorDZ4HACKeRs :) ## au fait, le séparateur identifiant/mots de passe cest le ":"...OK ??
Passons a la construction des règles de surveillance: dans la règle ci dessous, c'est le démon "nmbd" du package samba qui sera décortiqué.
## avec les mots clefs "check process", nous mettons en place la surveillance d'un processus. ## ensuite, nous donnons un nom au process (cela pourrait etre n'importe quoi) . ## avec la chaine "with pidfile" nous designons un fichier "pid" a vérifier. ## couramment les fichiers "pid" sont dans "/var/run/", ils sont créer par les processus, lors de leurs démarrage check process nmbd with pidfile /var/run/samba/nmbd.pid
## avec "start program =" ou "stop program=", nous indiquons le chemin de l'éxecutable, cela permettra la relance ou l'arret du processus ## nous y ajoutons l'argument "start" ou "stop" selon l'action. start program = "/etc/init.d/nmb start" stop program = "/etc/init.d/nmb stop"
## instruction conditionnel: si le processus n'est pas en écoute sur le port UDP 138, alors, relance du processus if failed port 138 type udp then restart
## là , si le processus n'est pas en écoute sur le port UDP 138, alors envoi d'une alerte (un mail quoi...). if failed port 138 type udp then alert if 2 restarts within 3 cycles then timeout group server ## c'etait le démon "nmbd" qui etait surveillé au dessus, chez moi, de temps a autres, il s'arrète, ## empechant le browsing rapide de mon reseau windows. La décortication est terminé pour l'instant, a vous d'adapter vos règles a vos services. check process smbd with pidfile /var/run/samba/smbd.pid start program = "/etc/init.d/smb start" stop program = "/etc/init.d/smb stop" if failed port 445 then restart if failed port 445 then alert if 2 restarts within 3 cycles then timeout group server check process apache with pidfile /var/run/httpd2.pid start program = "/etc/init.d/apache2 start" stop program = "/etc/init.d/apache2 stop" if failed port 80 then restart if 2 restarts within 3 cycles then timeout if loadavg(5min) greater than 10 for 8 cycles then restart if failed port 80 protocol http then alert group server check process sshd with pidfile /var/run/sshd.init.pid start program = "/etc/init.d/sshd start" stop program = "/etc/init.d/sshd stop" if failed port 22 then restart if failed port 22 then alert if 2 restarts within 3 cycles then timeout group server check process named with pidfile /var/lib/named/var/lib/named/var/run/named/named.pid start program = "/etc/init.d/named start" stop program = "/etc/init.d/named stop" if failed port 53 type udp then restart if failed port 53 type udp then alert if 2 restarts within 3 cycles then timeout group server check process snmpd with pidfile /var/run/snmpd.pid start program = "/etc/init.d/snmpd start" stop program = "/etc/init.d/snmpd stop" if failed port 161 type udp then restart if failed port 161 type udp then alert if 2 restarts within 3 cycles then timeout group server check process dhcpd with pidfile /var/lib/dhcp/var/run/dhcpd.pid start program = "/etc/init.d/dhcpd start" stop program = "/etc/init.d/dhcpd stop" if failed port 67 type udp then restart if failed port 67 type udp then alert if 2 restarts within 3 cycles then timeout group server check process squid with pidfile /var/run/squid.pid start program = "/etc/init.d/squid start" stop program = "/etc/init.d/squid stop" if failed port 3128 then restart if failed port 3128 then alert if 2 restarts within 3 cycles then timeout group server check process webmin with pidfile /var/webmin/miniserv.pid start program = "/etc/init.d/webmin start" stop program = "/etc/init.d/webmin stop" if 2 restarts within 3 cycles then timeout if cpu is greater than 60% for 2 cycles then alert if cpu > 80% for 5 cycles then restart if memory > 200.0 MB for 2 cycles then restart if children > 250 then restart if loadavg(5min) greater than 5 for 5 cycles then stop group server ## Là , nous surveyons les droits appliqués au fichier "anazapta.avi" ## avec la directive "with path", nous indiquons ou il se situe ## avec "if failed permission 0444", nous surveyons que le fichier conserve toujour les droits 444 (lecture pour tous ou rrr). check file anazapta with path "/data/divx/suite/anazapta.avi" if failed permission 0444 then alert group server ## Ici, c'est le serveur verseau a l' ip 192.168.0.3 qui est monitoré ## les ports SMTP,FTP,IMAP,POP,NESSUS sont checkés, en cas de non réponse du port, une alerte est remontée check host verseau with address 192.168.0.3 if failed icmp type echo with timeout 3 seconds then alert if failed port 25 protocol smtp then alert if failed port 21 protocol ftp then alert if failed port 110 then alert if failed port 143 then alert if failed port 1241 then alert group server
enfin, diverses captures d'écrans


fenetre d'authentification



vue synthetique de surveillance



surveillance du démon apache



surveillance reseau du serveur VERSEAU



surveillance d'un fichier