NAGIOS – Supervision basique d’un hôte

Supervision basique d’un hôte

L’un des cas les plus simples à aborder pour la supervision d’un hôte consiste à vérifier son état et sa disponibilité sur le réseau. Il y a plusieurs plugins génériques pour accomplir cette tâche comme check_ping et check_icmp. Le point commun entre ces deux plugins est le fait d’utiliser le protocole réseau ICMP (Internet Control Message Protocol) pour vérifier l’état de l’hôte. Ces plugins envoient une requête ICMP Echo pour tester si l’hôte est accessible sur le réseau. Nagios propose par défaut le plugin check_ping pour vérifier si un hôte est vivant et connecté sur le réseau. Ce plugin utilise la commande système ping pour envoyer la requête ICMP ECHO. La syntaxe de ce plugin est la suivante :

check_ping -H <host_address> 
                    -w <wrta>,<wpl>% -c <crta>,<cpl>%   
                    [-p packets] [-t timeout] [-4|-6]

Les options utilisées par ce plugin sont :

  • -H, –hostname : cette option spécifie le nom ou l’adresse IP de l’hôte à interroger.

  • -w, –warning : cette option spécifie la valeur de seuil d’avertissement sous forme de RTA (Round Trip Average) et le pourcentage des paquets perdus.

  • -c, –critical : cette option spécifie la valeur de seuil critique sous forme de RTA et le pourcentage de paquets perdus.

  • -p, –packets : cette option spécifie le nombre de paquets ICMP à envoyer ; par défaut à 5.

  • -t, –timeout : cette option spécifie le nombre de secondes avant de terminer la connexion ; par défaut à 10.

  • -4, –use-ipv4 : cette option spécifie d’utiliser une connexion IPv4.

  • -6, –use-ipv6 : cette option spécifie d’utiliser une connexion IPv6.

RTA est le temps moyen pris en millisecondes pour que le paquet retourne vers le point de départ. Le pourcentage des paquets perdus représente le rapport entre le nombre de paquets perdus et le nombre de paquets envoyés. Par exemple, la valeur 200,000ms, 0% signifie que le ping prend en moyenne 200 ms pour retourner avec 0% de paquets perdus.

Voici un exemple simple d’appel au plugin :

./check_ping   8.8.8.8   -w 3000.0,75% -c 5000.0,90% -p 5 -4 
 
PING OK - Packet loss = 0%, RTA = 1.63 ms|rta=1.630000ms; 
3000.000000;5000.000000;0.000000 pl=0%;75;90;0

Le retour de la commande indique que le paquet ping pour l’hôte 8.8.8.8 prend en moyenne 1.63 ms de round trip time avec 0% de paquets perdus. La commande ci-dessous peut être utilisée pour vérifier l’état de disponibilité d’un hôte.

define command {  
   command_name          check-host-alive-ping 
   command_line          $USER1$/check_ping -H $HOSTADDRESS$ 
-w 3000.0,75% -c 5000.0,90% -p 5 -4 
}

Contrairement à check_pingcheck_icmp permet de vérifier plusieurs hôtes une seule fois avec plus de personnalisation et il génère également des données de performance. Mais la principale différence est que check_ping exécute la commande système ping et analyse sa sortie alors que le plugin check_icmp utilise ICMP lui-même et sa performance est meilleure. Ce plugin nécessite d’activer le bit suid (chmod 755) pour fonctionner correctement avec le compte utilisateur nagios ou en utilisant la commande sudo.

La syntaxe du plugin est la suivante :

check_icmp [options] [-H] host1 host2 hostN

Plusieurs options peuvent être utilisées avec ce plugin, à savoir :

  • -H : cette option spécifie les noms ou adresses IP du ou des hôtes cibles.

  • -w : cette option spécifie le seuil d’avertissement sous  forme de RTA et le pourcentage des paquets perdus. Par défaut, la valeur est 200.000ms, 40% (soit 200 ms de round trip time et 40% de paquets perdus).

  • -c : cette option spécifie le seuil critique sous forme de RTA et le pourcentage des paquets perdus. Par défaut, la valeur est 500.000ms, 80 % (soit 500 ms de round trip time et 80% de paquets perdus).

  • -s : cette option spécifie le nom ou l’adresse IP de la machine source.

  • -n : cette option spécifie le nombre de paquets à envoyer. Par défaut, la valeur est 5.

  • -i : cette option spécifie l’intervalle maximal entre les paquets. Par défaut, la valeur est 80.000ms.

  • -I : cette option spécifie l’intervalle maximal entre les hôtes. Par défaut, la valeur est 0.000ms.

  • -m : cette option spécifie le nombre d’ordinateurs vivants nécessaires à la réussite de la commande.

  • -l : cette option spécifie le TTL sur les paquets IP sortants. Par défaut, la valeur est 0.

  • -t : cette option spécifie le nombre de secondes avant de terminer la connexion. Par défaut, la valeur est 10.

  • -b : cette option spécifie le nombre de données ICMP octets à envoyer. La taille des paquets sera en octets la taille des données + l’en-tête ICMP. Par défaut, la valeur est 76 (68 + 8).

Voici un exemple simple d’appel au plugin en utilisant les options par défaut :

./check_icmp -H 8.8.8.8 www.google.fr  
 
OK - 8.8.8.8: rta 1.650ms, lost 0% :: www.google.fr: rta 1.341ms, lost 0% 
|8.8.8.8rta=1.650ms;200.000;500.000;0; 8.8.8.8pl=0%;40;80;; 
8.8.8.8rtmax=2.049ms;;;; 
8.8.8.8rtmin=1.468ms;;;;  
www.google.frrta=1.341ms;200.000;500.000;0; www.google.frpl=0%;40;80;; 
www.google.frrtmax=2.263ms;;;; www.google.frrtmin=0.946ms;;;;

Le retour de la commande indique que le paquet ping pour l’hôte 8.8.8.8 prend en moyenne 1.65 ms de round trip time avec 0 % de paquets perdus alors qu’il prend en moyenne 1.341 ms de round trip time avec 0 % de paquets perdus pour l’hôte.

Un autre exemple d’utilisation du plugin check_icmp avec toutes ces options :

./check_icmp -H 8.8.8.8 -w 200,50% -c 500,80% -n 5 -i 80 -I 0 -m 3 -l 0 -t 10 -b 52 
 
OK - 8.8.8.8: rta 1.631ms, lost 0%|rta=1.631ms;200.000;500.000;0; pl=0%;50;80;; 
rtmax=2.003ms;;;; rtmin=1.491ms;;;;

Comme le plugin check_icmp est plus performant que le plugin check_ping, il sera mieux de modifier la commande check_host_alive de Nagios pour qu’elle utilise check_icmp.

define command{ 
   command_name            check-host-alive  
   command_line            $USER1$/check_icmp -H $HOSTADDRESS$ 
-w 200.0,50% -c 500.0,80% -n 2  
 }

Il est recommandé de minimiser le nombre de paquets à envoyer et de maximiser le nombre de contrôles à exécuter. Ce type de paramétrage permet de détecter rapidement l’indisponibilité de l’hôte sur le réseau. Il vaut mieux n’envoyer qu’un ou deux paquets et exécuter le contrôle 5 fois toutes les minutes plutôt que d’envoyer 5 paquets et exécuter le contrôle une seule fois toutes les 5 minutes comme il est configuré par défaut.

Le modèle de l’hôte ci-dessous illustre ces recommandations :

define host{ 
        name                            generic-host 
        active_checks_enabled           1  
        check_command                   check-host-alive 
        process_perf_data               1 
        check_period                    24x7 
        check_interval                  1 
        retry_interval                  1 
        max_check_attempts              10 
        }

Si vous avez une réponse DOWN à la commande check-host-alive malgré que l’hôte fonctionne, il faudra vérifier qu’aucun firewall ou filtrage réseau des paquets ICMP ne bloque la connexion.