Introduction
Nagios a la capacité de faire la distinction entre les services "normaux" et les services "volatiles". L'option is_volatil de chaque définition de service vous permet de spécifier si ou non un service spécifique est volatile. Pour la plupart des gens, la majorité des services supervisés sera de type non-volatile (i.e. "normal"). Toutefois, des services volatiles peuvent se révéler très utiles lorsqu'ils sont bien utilisés...
A quoi servent-ils ?
Les services volatiles sont utiles pour superviser...
Qu'est-ce que les services volatiles ont de si particulier ?
Les services volatiles 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 fonctionnalités des services volatiles avec les contrôles passifs de service, vous pouvez faire des choses 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 pour scanner les ports de votre machine et les 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?