Introduction
Nagios est capable de faire la distinction entre les services "normaux" et les services "volatils". L'option <is_volatil> de chaque définition de service vous permet de spécifier si un service spécifique est volatil ou pas. Pour la plupart des gens, la majorité des services supervisés sera de type non-volatil (i.e. "normal"). Toutefois, des services volatils peuvent se révéler très utiles lorsqu'ils sont utilisés à propos...
A quoi servent-ils ?
Les services volatils sont utiles pour superviser...
Qu'est-ce que les services volatils ont de si particulier ?
Les services volatils diffèrent des services "normaux" de trois façons importantes. Chaque fois qu'ils sont contrôlés quand ils sont dans un état hard non-OK, et que le contrôle retourne un état non-OK (i.e. aucun changement d'état n'a eu lieu)...
Ces événements ne se produisent normalement que lorsque des services sont dans un état non-OK et qu'un changement d'état hard vient de se produire. En d'autre termes, ils ne se produisent que la première fois que le service passe dans un état non-OK. Si des contrôles ultérieurs du service conduisent au même état non-OK, il n'y a aucun changement d'état hard et aucun des événements mentionnés ne se reproduit.
La puissance de deux
Si vous combinez les possibilités des services volatils avec les contrôles passifs de service, vous pouvez obtenir des résultats très utiles. Par exemple, gérer des traps SNMP, des alertes de sécurité, etc.
Que diriez-vous d'un exemple ?... Disons que vous exécutiez le produit PortSentry [Anglais] de Psionic Software [Anglais] (qui est gratuit, soit dit en passant) pour détecter des scan de ports sur votre machine et automatiquement éjecter des intrus potentiels. Si vous voulez que Nagios soit averti des scans de ports, vous pouvez mettre en place ce qui suit...
Dans Nagios:
Dans PortSentry:
Créez un script Shell dans le répertoire /usr/local/nagios/libexec/eventhandlers que vous appelez submit_check_result. Le contenu de ce script Shell doit ressembler à ceci...
#!/bin/sh
# Write a command to the Nagios command file to cause
# it to process a service check result
echocmd="/bin/echo"
CommandFile="/usr/local/nagios/var/rw/nagios.cmd"
# get the current date/time in seconds since UNIX epoch
datetime=`date +%s`
# create the command line to add to the command file
cmdline="[$datetime] PROCESS_SERVICE_CHECK_RESULT;$1;$2;$3;$4"
# append the command to the end of the command file
`$echocmd $cmdline >> $CommandFile`
Notez que si vous exécutez PortSentry en tant que root, vous devrez ajouter au script la modification du propriétaire du fichier et les permissions de façon à ce que Nagios et les CGI puissent lire/modifier le fichier de commande. Vous trouverez des détails sur les permissions/l'appartenance du fichier de commande ici.
Et donc qu'arrive-t'il lorsque PortSentry détecte un scan de port sur la machine?