NAGIOS – Supervision des services réseau

Supervision des services réseau

1. Contrôle d’un port réseau

La majorité des applications utilise des ports réseau spécifiques pour faire fonctionner leurs services. Ces derniers sont généralement disponibles à travers un port réseau TCP ou UDP. Par exemple, le service web HTTP écoute sur le port TCP 80. L’un des moyens pour superviser le bon fonctionnement d’un service sur le réseau est de vérifier l’état du port qu’il l’utilise. Si le port est fermé, cela signifie que le service n’est pas lancé et il n’est pas accessible sur le réseau. Dans de nombreux cas avec Nagios, il suffit d’exécuter des plugins génériques check_tcp ou check_udp pour vérifier si un service est disponible sur un port TCP ou UDP. Toutefois, il est recommandé d’exécuter des plugins spécialisés pour divers services tels que les serveurs web ou e-mail.

check_tcp est un plugin générique permettant de tester les connexions TCP avec un hôte spécifié. Alors que le plugin check_udp permet de tester les connexions UDP avec un hôte spécifié. La syntaxe de ces deux plugins est la suivante :

check_tcp|check_udp  -H host -p port [-w <warning >] [-c <critcal>] 
                     [-s <send string>] [-e <expect string>] 
                     [-q <quit string>] [-A] [-m <maximum bytes>] 
                     [-d <delay>] [-t <timeout>] [-r <refuse state>] 
                     [-M <mismatch state>] [-v] [-4|-6] 
                     [-j] [-D <days to cert expiry>] [-S] [-E] 

Les options qui peuvent être utilisées avec ces deux plugins sont :

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

  • -p, –port : cette option spécifie le numéro de port à contacter. Aucun port n’est utilisé par défaut.

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

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

  • -E, –escape : cette option spécifie la possibilité d’utiliser \n, \r, \t ou \\ dans les chaînes de caractères des options [send] ou [quit]. Par défaut, rien n’est ajouté pour l’option [send] et \r\n sont ajoutés à la fin de l’option [quit].

  • -s, –send : cette option spécifie la chaîne de caractères à envoyer au serveur.

  • -e, –expect : cette option spécifie la chaîne de caractères attendue dans la réponse du serveur.

  • -A, –all : cette option spécifie toutes les chaînes de caractères attendues dans la réponse du serveur. Par défaut, il faut attendre toutes les chaînes.

  • -q, –quit : cette option spécifie la chaîne de caractères à envoyer au serveur pour lancer une fermeture propre de la connexion.

  • -r, –refuse : cette option spécifie d’accepter les refus de TCP avec les états okwarn ou crit. Par défaut : crit.

  • -M, –mismatch : cette option permet d’accepter les erreurs dans les chaînes retournées avec les états okwarn ou crit. Par défaut : warn.

  • -j, –jail : cette option permet de cacher la sortie du socket TCP.

  • -m, –maxbytes : cette option permet de fermer la connexion une fois le nombre d’octets reçu égal au paramètre.

  • -d, –delay : cette option spécifie le nombre de secondes à attendre entre l’envoi de la chaîne et l’attente de la réponse.

  • -D, –certificate : cette option spécifie le nombre de jours minimum de validité d’un certificat.

  • -S, –ssl : cette option permet d’utiliser SSL pour la connexion.

  • -w, –warning : cette option renvoie un état d’avertissement si le temps de réponse dépasse le seuil passé en paramètre.

  • -c, –critical : cette option renvoie un état critique si le temps de réponse dépasse le seuil passé en paramètre.

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

Voici un exemple simple d’appel au plugin check_tcp pour vérifier l’état du port 80 en utilisant les paramètres du plugin par défaut :

./check_tcp 192.168.16.2 -p 80 
 
TCP OK - 0.003 second response time on port 80|time=0.003004s;;;0.000000;10.000000

Le retour de la commande indique que l’état de port 80 est OK et que le serveur 192.168.16.2 répond en 0.003 secondes.

Et voici un exemple simple d’appel au plugin check_udp pour vérifier si le serveur OpenVPN est à l’écoute sur le port UDP 1142 :

./check_tcp 192.168.16.2 -p 1142 
 
UDP OK - 0.010 second response time on port 1142|time=0.010004s;;;0.000000;10.000000

Le retour de la commande indique que l’état de port 1142 est OK et que le serveur 192.168.16.2 répond en 0.010 secondes. La commande ci-après permet d’utiliser de façon générique le plugin check_tcp.

define command{ 
        command_name  check_tcp 
        command_line     $USER1$/check_tcp -H  $HOSTADDRESS$  -p $ARG1$ 
}

Alors que la commande suivante permet d’utiliser de façon générique le plugin check_udp.

define command{ 
        command_name  check_udp 
        command_line     $USER1$/check_udp -H  $HOSTADDRESS$  -p $ARG1$ 
}

2. Contrôle d’un serveur DNS

DNS (Domain Name System) ou le système de noms de domaine est un protocole réseau qui utilise le port 53 à travers une connexion UDP pour résoudre des noms de domaines en adresses IP et vice versa. Le DNS est un service réseau indispensable que l’on oublie souvent de contrôler.  Un site web peut être inaccessible à cause d’un problème au niveau DNS. Nagios offre deux plugins pour superviser le service DNS qui sont check_dns et check_dig.

Le plugin check_dns utilise la commande nslookup pour vérifier si la résolution d’un nom vers une adresse IP et vice versa est bien fonctionnelle ou non.

La syntaxe du ce plugin est la suivante :

check_dns -H host [-s server] [-a expected-address] 
          [-A] [-t timeout]  
          [-w warn] [-c crit]

Les options disponibles avec ce plugin sont :

  • -H, –hostname : cette option spécifie le nom ou l’adresse que vous souhaitez interroger.

  • -s, –server : cette option spécifie le serveur DNS que vous souhaitez utiliser pour la requête nslookup. Si aucun serveur DNS n’est spécifié, le serveur par défaut spécifié dans le fichier /etc/resolv.conf sera utilisé.

  • -a, –expected-address : cette option spécifie l’adresse IP attendue en réponse à la requête. HOST doit se terminer par un point (.). Si plusieurs adresses sont retournées à la fois, vous devez faire correspondre l’ensemble de la chaîne d’adresses séparées par des virgules (classées par ordre alphabétique).

  • -A, –expect-Autorité : cette option permet de vérifier si le serveur DNS interrogé fait autorité pour la requête demandée.

  • -w, –warning : cette option spécifie le seuil d’avertissement si le temps écoulé dépasse la valeur passée en paramètre. Par défaut, cette option est désactivée.

  • -c, –critical : cette option spécifie le seuil critique si le temps écoulé dépasse la valeur passée en paramètre. Par défaut, cette option est désactivée.

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

Voici un exemple d’utilisation du plugin check_dns :

./check_dns exchange.nagios.org 
 
DNS OK: 0.394 seconds response time. exchange.nagios.org returns  
66.228.58.94|time=0.394412s;;;0.000000 

La commande ci-dessus a utilisé les valeurs par défaut : le serveur DNS spécifié dans le fichier /etc/resolv.conf du serveur Nagios a été utilisé pour exécuter la requête de résolution et l’exécution de contrôle avait 10 secondes pour s’effectuer avant de le terminer. Le résultat retourné indique que les serveurs DNS d’exchange.nagios.org sont fonctionnels puisque le nom de domaine exchange.nagios.org a été résolu vers l’adresse IP 66.228.58.94 en 0.394412 secondes.

Maintenant, nous allons inverser la requête, c’est-à-dire essayer de résoudre une adresse IP vers le nom de domaine.

./check_dns 66.228.58.94 
 
DNS OK: 0.074 seconds response time. 66.228.58.94 returns  
exchange.nagios.org.|time=0.074457s;;;0.000000 

Les deux exemples ci-dessus sont des appels basiques au plugin check_dns. Elles permettent juste de vérifier l’état de serveur DNS spécifié dans le fichier /etc/resolv.conf du serveur localhost.

L’exemple suivant peut être considéré comme l’appel le plus complet possible au plugin check_dns. Nous allons vérifier auprès du serveur DNS ns-861.awsdns-43.net que le nom de domaine exchange.nagios.org fonctionne correctement et se résolve vers l’adresse IP 66.228.58.94 dans un temps acceptable qui ne dépasse pas 5 secondes de temps de réponse comme un seuil d’avertissement et 10 secondes comme un seuil critique. Enfin, le temps d’exécution de la commande ne doit pas excéder 10 secondes.

./check_dns -H exchange.nagios.org -s ns-861.awsdns-43.net -a 
66.228.58.94 -A -w 5 -c 10 -t 5 
 
DNS OK: 0.052 seconds response time. exchange.nagios.org returns  
66.228.58.94|time=0.052437s;;;0.000000

Le retour de la commande indique que le serveur DNS ns-861.awsdns-43.net fonctionne correctement et aussi que le nom de domaine exchange.nagios.org se résout bien.

Maintenant que nous avons testé le plugin check_dns manuellement, nous allons l’utiliser pour définir des commandes Nagios.

La première commande check_nom_ip permet d’exécuter des requêtes de résolution de noms de domaine vers une adresse IP en spécifiant un serveur DNS.

define command{ 
       command_name          check_nom_ip 
        command_line         $USER1$/check_dns -H $HOSTNAME$ -a 
 $HOSTADDRESS$  -s $ARG1$ -w 5 -c 10 
}

La deuxième commande permet d’exécuter des requêtes de résolution d’une adresse IP vers un nom de domaine en spécifiant un serveur DNS.

define command{ 
        command_name         check_ip_nom 
        command_line         $USER1$/check_dns -H $HOSTADDRESS$ 
-a $HOSTNAME$. -s $ARG1$ -w 5 -c 10 
}

Un autre plugin peut être utilisé avec Nagios pour contrôler le service DNS est le plugin check_dig. Ce plugin permet de tester le service DNS en utilisant la commande digdig est une commande permettant de débugger les dysfonctionnements dans la résolution de nom.

La syntaxe du plugin check_dig est la suivante :

check_dig  [-H <host>]  -l <query_address>  
           [-p <server port>]  [-T <query type>] 
           [-w <warning interval>] [-c <critical interval>] 
           [-t <timeout>] [-a <expected answer address>] [-v]

check_dig utilise les options suivantes :

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

  • -p, –port : cette option spécifie le numéro de port (par défaut: 53).

  • -l, –query_address : cette option spécifie le nom du serveur recherché.

  • -T, –record_type : cette option spécifie le type d’enregistrement DNS à interroger. Par défaut : l’enregistrement A est utilisée.

  • -a, –expected_address : cette option spécifie l’adresse qui devrait être dans la section de réponse.

  • -w, –warning : cette option spécifie le seuil du temps de réponse à partir duquel se produit un état d’avertissement.

  • -c, –critical : cette option spécifie le seuil du temps de réponse à partir duquel se produit un état critique.

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

Un exemple d’une commande Nagios utilisant le plugin check_dig est le suivant :

define command{ 
       command_name     check_dig 
       command_line     $USER1$/check_dig -H $ARG1$ -l $HOSTNAME$ -T 
$ARG2$ -a $HOSTADDRESS$ -w $ARG2$ -c $ARG3$ -t $ARG4$ 
}

3. Contrôle d’un serveur SSH

SSH (Secure Shell) est un protocole réseau standard permettant d’établir des connexions sécurisées et chiffrées entre un serveur et un client SSH. Ce protocole est très utilisé dans l’administration des serveurs surtout Linux et les équipements réseau en utilisant le port par défaut 22.

Nagios possède le plugin check_ssh pour contrôler le bon fonctionnement d’un serveur SSH. check_ssh permet de vérifier la disponibilité du service de connexion SSH sur un hôte. Il essaye de se connecter en SSH au serveur via un port spécifique.

La syntaxe du plugin check_ssh est la suivante :

check_ssh  [-H <host>]  [-p <port>]   
           [-4|-6] [-t <timeout>] 
           [-r <remote version>] 

Les options disponibles avec ce plugin sont :

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

  • -p, –port : cette option spécifie le numéro de port à utiliser pour se connecter. Par défaut, le port 22 est utilisé.

  • -4, –use-Ipv4 : cette option permet d’utiliser une connexion IPv4.

  • -6, –use-Ipv6 : cette option permet d’utiliser une connexion IPv6.

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

  • -r, –remote-version : cette option permet de retourner la version du serveur SSH. Si la chaîne ne correspond pas (ex: OpenSSH_3.9p1), une alerte sera produite.

  • -P, –remote-protocol : cette option permet de retourner la version du protocole (ex: 2.0). Si le protocole ne correspond pas à la version, une alerte sera produite.

Voici un exemple d’utilisation du plugin check_ssh :

./check_ssh 192.168.10.5 -p 22

Le retour de la commande que le service SSH est disponible sur le serveur 192.168.10.5 à travers le port 22.

Nous pouvons définir la commande ci-dessous pour utiliser le plugin check_ssh avec Nagios :

define command{ 
    command_name    check_ssh 
    command_line    $USER1$/check_ssh  $HOSTADDRESS$ -p $ARG1$ 
}

Et la définition de service correspondante :

define service{ 
    use                   actif-generic 
    host_name             Linux-Server 
    service_description   ssh 
    check_command         check_ssh!22! 
}

4. Contrôle d’un serveur NTP

NTP (Network Time Protocol) est un protocole réseau d’heure permettant de synchroniser l’horloge locale des machines sur une référence d’heure fournie par des serveurs de temps de l’Internet. Ce protocole utilise le port 123 par défaut.

Deux plugins sont disponibles avec Nagios pour superviser le service NTP. Ces deux plugins sont check_ntp_peer et check_ntp_time. Le plugin check_ntp_peer permet de vérifier la santé d’un serveur NTP sans utiliser des programmes ou des bibliothèques externes. Il prend en charge la vérification de plusieurs paramètres sur le serveur NTP comme la strate du serveur ou comme la gigue. Alors que le plugin check_ntp_time permet de vérifier le décalage d’horloge entre l’hôte local et un distant serveur NTP.

Nous allons nous intéresser au plugin check_ntp_peer. La syntaxe de ce plugin est la suivante :

check_ntp_peer  -H <host> [-4|-6]  
                [-w <warn>] [-c <crit>]  
                [-W <warn>] [-C <crit>] 
                [-j <warn>] [-k <crit>] [-v verbose]

Les options disponibles avec ce plugin sont :

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

  • -p, –port : cette option spécifie le numéro de port à contrôler. Par défaut, le plugin utilise le port 123.

  • -q, –quiet : cette option renvoie un état inconnu lorsque le serveur n’est pas synchronisé.

  • -w, –warning : cette option spécifie le décalage en secondes produisant un état d’avertissement.

  • -c, –critical : cette option spécifie le décalage en secondes produisant un état critique.

  • -W, –swarn : cette option spécifie le seuil d’avertissement pour la strate.

  • -W, –scrit : cette option spécifie le seuil critique pour la strate.

  • -j, –jwarn : cette option spécifie le seuil d’avertissement pour le jitter.

  • -k, –jcrit : cette option spécifie le seuil critique pour le jitter.

  • -m, –twarn : cette option spécifie le seuil d’avertissement pour le nombre de sources de temps utilisables qui s’appellent « truechimers » dans la terminologie NTP.

  • -n, –tcrit : cette option spécifie le seuil critique pour le nombre de sources de temps utilisables qui s’appellent « truechimers » dans la terminologie NTP.

La commande permettant de vérifier le décalage entre le serveur local et le serveur NTP est la suivante :

./check_ntp_peer -H ntp.server.net -w 5 -c 10  
 
NTP OK: Offset -0,128 secs|offset=-0,128000s;5,000000;10,000000;

Le contrôle du jitter du serveur NTP peut être réalisé par la commande ci-dessous :

./check_ntp_peer -H ntp.server.net -j -1:100 -k -1:200 
 
NTP OK: Offset -0,376 secs, jitter=129,000000 | offset= 
-0,376000s;60,000000;120,000000; 
jitter=130,000000;100,000000;200,000000;0,000000

Enfin, le contrôle de la strate du serveur NTP peut être réalisé avec l’appel suivant :

./check_ntp_peer -H ntp.server.net -W 4 -C 6 
 
NTP OK: Offset -0,205 secs, stratum=3|offset=-0,205000s;

Ce qui donne les trois définitions de commandes Nagios suivantes :

define command{ 
   command_name       check_ntp_peer 
   command_line       $USER1$/check_ntp_peer -H $HOSTADDRESS$ 
-w $ARG1$ -c $ARG2$ 
}
define command{ 
   command_name         check_ntp_jitter 
   command_line         $USER1$/check_ntp_peer -H $HOSTADDRESS$ 
-j $ARG1$ -k $ARG2$ 
}
define command{ 
   command_name       check_ntp_strate 
   command_line       $USER1$/check_ntp_peer -H $HOSTADDRESS$ 
-W $ARG1$ -C $ARG2$ 
}

5. Contrôle d’un serveur FTP

Nagios permet de vérifier si un serveur FTP est à l’écoute des connexions en utilisant le plugin check_ftp. Ce plugin est identique au plugin check_tcp, tandis que le port est facultatif. Par défaut, un message de bienvenue FTP valide est prévu.

La syntaxe du plugin check_ftp est la suivante :

check_ftp -H host [-p port] [-w <warning time>] 
         [-c <critical time>] [-s <send string>]  
         [-e <expect string>] [-q <quit string>]        
         [-A] [-m <maximum bytes>] [-d <delay>]   
         [-t <timeout seconds>] [-r <refuse state>] 
         [-M <mismatch state>] [-v] [-4|-6] [-j]  
         [-D <days to cert expiry>] [-S] [-E]

Les options acceptées par ce plugin sont les mêmes que le plugin check_tcp, nous ne les détaillons pas et nous passons directement à un exemple d’utilisation.

/check_ftp -H 192.168.45.10 -p 21 
 
FTP OK - 0.021 second response time on port 21 [220 (vsFTPd  
2.3.5)]|time=0.020613s;;;0.000000;10.000000

Un exemple de définition d’une commande Nagios pour vérifier les connexions FTP est comme suit :

define command { 
   command_name     check_ftp 
   command_line      $USER1$/check_ftp -H $HOSTADDRESS$ -p $ARG1$ 
}

6. Contrôle d’un serveur DHCP

DHCP (Dynamic Host Configuration Protocol) est un protocole permettant de distribuer de façon dynamique des adresses IP à des hôtes qui se connectent sur le réseau. Nagios offre un plugin check_dhcp permettant de vérifier le bon fonctionnement d’un serveur DHCP en tentant d’avoir une adresse IP à partir du serveur.

Le plugin check_dhcp envoie une demande DHCPDISCOVER pour un serveur spécifique ou tout le réseau. S’il reçoit en réponse une offre DHCPOFFER, cela signifie que le serveur DHCP est bien fonctionnel sur le réseau.

La syntaxe de ce plugin est un peu différente des autres plugins :

check_dhcp [-v] [-u] [-s serverip]  
           [-r requestedip] [-t timeout] 
           [-i interface] [-m mac]

Ce plugin accepte les options décrites ci-dessous :

  • -s, –serverip : adresse IP du serveur DHCP qui devrait répondre.

  • -r, –requestedip : adresse IP qui devrait être proposée par au moins un serveur DHCP.

  • -t, –timeout : durée maximale d’attente de DHCPOFFER avant l’expiration.

  • -i, –interface : interface à utiliser pour l’écoute (ex. eth0).

  • -m, –mac : adresse MAC à utiliser dans la requête DHCP.

  • -u, –unicast : test unicast : imite un relais DHCP, nécessite -s.

Nous allons maintenant exécuter manuellement le plugin dans sa forme la plus complète. C’est-à-dire il va interroger un serveur dont son rôle est prévu de distribuer les adresses IP sur le réseau.

./check_dhcp -s 192.168.10.2 -m 00:16:c2:36:78:89 - r 192.168.10.30 
 
OK: Received 1 DHCPOFFER(s), 1 of 1 requested servers responded,  
requested address (192.168.10.30) was offered, max lease time = 864000 sec.

Nous avons bien vérifié que notre serveur DHCP 192.168.10.2 est disponible et bien fonctionnel sur le réseau puisqu’il a répondu à la demande d’accorder l’adresse 192.168.10.30 à l’hôte qui possède l’adresse MAC 00:16:c2:36:78:89.

Passons maintenant à la définition d’une nouvelle commande sur Nagios en utilisant ce plugin :

define command{ 
   command_name    check_dhcp 
   command_line    $USER1$/check_dhcp -s $HOSTADDRESS$ -m $ARG1$ 
-r $ARG2$ 
} 

Cette commande nous permet de vérifier qu’une machine spécifique délivre une adresse IP spécifique pour un demandeur avec une adresse MAC spécifique. Ci-dessous une définition du service correspondant à l’exemple testé en ligne de commandes.

define service{ 
    use                  actif-generic 
    host_name            Serveur_DHCP 
    service_description  DHCP_STATIC 
    check_command        check_dhcp!00:16:c2:36:78:89!192.168.10.30! 
        }

7. Contrôle d’un serveur HTTP et HTTPS

Le protocole HTTP (HyperText Transfer Protocol) est le protocole réseau le plus connu et utilisé dans le monde de la communication numérique. Ce protocole représente la base d’Internet. En utilisant le port réseau 80 par défaut, HTTP permet à un client de communiquer avec un serveur connecté au réseau.

Nagios offre le plugin check_http pour contrôler un serveur HTTP. Ce plugin teste le service HTTP sur un hôte spécifié. Il peut vérifier les réponses web, vérifier les temps de connexion, suivre les redirections, rechercher les chaînes et les expressions régulières et contrôler l’expiration du certificat SSL. La syntaxe de ce plugin est présentée ci-dessous dans sa forme la plus complète :

check_http  -H <vhost> | -I <IP-address> [-u <url>]  
            [-p <port>] [-P string] 
            [-J <client certificate file>] [-K <private key>] 
            [-w <warn time>] [-c <critical time>]  
            [-t <timeout>] [-L] [-E] [-a auth] 
            [-b proxy_auth] [-f <ok | warn | critcal | follow>] 
            [-e <expect>] [-s string] [-l] 
            [-r <regex> | -R <case-insensitive regex>] 
            [-m <min_pg_size>:<max_pg_size>]  
            [-4|-6] [-N] [-M <age>] 
            [-A string] [-k string] [-S <version>] [--sni]  
            [-C <warn_age>[,<crit_age>]] 
            [-T <content-type>] [-j method]

Seules les options plus utilisées sont présentées ci-dessous :

  • -H, –hostname : cette option spécifie le nom d’hôte qui doit être utilisé dans l’en-tête HTTP. Le port peut être ajouté comme il est également présenté dans l’en-tête HTTP exchange.nagios.org:81 par exemple.

  • -I, –IP-address : cette option spécifie l’adresse IP ou le nom de domaine de l’hôte à contrôler. Si ce paramètre est non spécifié, la valeur passée avec l’option –hostname est utilisée.

  • -u, –url : cette option spécifie l’adresse à récupérer (GET) ou à envoyer (POST). Par défaut, la racine du serveur web (/) est utilisée.

  • -p, –port : cette option spécifie le numéro de port à utiliser pour se connecter. Par défaut, la valeur est 80.

  • -P, –post : cette option permet d’encoder sous forme d’URL la requête et ses arguments à envoyer au serveur web.

  • -N, –no-body : cette option permet d’effectuer le contrôle plus rapide que le contrôle normal. La commande envoyée au serveur web permet de récupérer les en-têtes de la page et non pas toute la page.

  • -M, –max-age : cette option permet de contrôler l’âge d’une page exprimée en secondes.

  • -m, –pagesize : cette option permet de contrôler la taille minimale et maximale de la page retournée exprimée en octets.

  • -e, –expect : cette option permet de préciser le texte à attendre dans la première ligne de la réponse HTTP. Par défaut : HTTP/1.

  • -s, –string : cette option permet de rechercher une chaîne de caractères spécifiée dans le résultat HTML.

  • -r, –regex, –ereg : cette option permet de rechercher une expression régulière spécifiée dans le résultat HTML.

  • -f, –onredirect : cette option permet de préciser la façon dont sont traitées les redirections telle que okwarningcritical et follow.

  • -a, –authorization : cette option spécifie le nom d’utilisateur et le mot de passe à utiliser pour s’authentifier auprès des pages proposant une authentification.

Le plugin check_http est utilisé aussi pour superviser la version sécurisée du protocole HTTP qui est HTTPS. Ce dernier utilise le port 443 par défaut. Deux autres options du plugin check_http sont nécessaires pour contrôler un serveur HTTPS :

  • -S, –ssl : cette option permet de vérifier la connexion sécurisée SSL. Port par défaut 443.

  • -C, –certificate : cette option indique le nombre de jours avant expiration à partir duquel une alerte est levée. Si cette option est utilisée, aucun contrôle n’est effectué sur les URL.

Ci-dessous un exemple simple d’utilisation du ce plugin. Cet exemple permet de vérifier la réponse et la disponibilité d’un serveur web HTTP.

./check_http -I exchange.nagios.org  
 
HTTP OK: HTTP/1.1 302 Found - 264 bytes in 0.064 second response  
time  |time=0.063826s;;;0.000000 size=264B;;;0

Le message de retour de la commande exécutée indique que la réponse du serveur web exchange.nagios.org est HTTP/1.1 en 0.064 seconde de temps de réponse avec la taille de la page égale à 264B.

Un deuxième exemple permet de vérifier la réponse et la disponibilité d’un serveur HTTPS en utilisant l’option –ssl.

./check_http -I 45.33.126.74 --ssl  
 
HTTP OK HTTP/1.1 200 OK - 55349 bytes in 0.923 seconds 
|time=0.923217s;;;0.000000 size=55349B;;;0

Ci-dessous un autre exemple permet de vérifier la validité du certificat SSL installé sur un serveur HTTPS.

./check_http -I www.nagios.org --ssl -C 45 
 
OK - Certificate will expire on 05/10/2018 23:59.

En se basant sur les exemples étudiés en ligne de commandes ci-dessus, nous écrivons les définitions des commandes Nagios.

La commande check_http permet de vérifier tout simplement le serveur web HTTP sans passer des arguments dans la définition du service :

define command{ 
   command_name check_http 
   command_line $USER1$/check_http -H $HOSTADDRESS$  
}

La même commande que ci-dessus, mais dédiée pour vérifier un serveur HTTPS :

define command { 
   command_name check_https 
   command_line $USER1$/check_http -H $HOSTADDRESS$ --ssl 
}

Une dernière commande permet de vérifier la validité du certificat SSL :

define command{ 
    command_name    check_ssl_certificate 
    command_line    $USER1$/check_http -I $HOSTADDRESS$ -C $ARG1$ --ssl 
}

Celle ci-dessous correspond à un service paramétré pour utiliser la commande check_ssl_certifcate :

define service{ 
        use                     actif-generic 
        host_name               www.nagios.org 
        service_description     ssl_certificate 
        check_command           check_ssl_certificate!30 
}