NAGIOS – Supervision d”un site web

Supervision d’un site web

Aujourd’hui, le site web et le serveur qui l’héberge, sont parmi les composantes les plus critiques dans le système d’information de l’entreprise. Si les performances d’un site web sont faibles et si le taux d’indisponibilité est important, cela peut avoir un impact sérieux sur l’image de marque de l’entreprise. La surveillance et les contrôles permanents, proactifs et réactifs des sites Internet par Nagios, permettent non seulement de vous alerter en cas d’une défaillance du système, mais évitent aussi la production d’une panne. En conséquence, vous pouvez atteindre une disponibilité des serveurs 24/24 et du site web 7/7.

La surveillance d’un site web avec Nagios consiste à :

  • contrôler la disponibilité du site web ;

  • contrôler les ressources du système tel que la charge du CPU et l’utilisation de la mémoire du serveur ainsi que l’espace libre du disque dur, etc. ;

  • contrôler le contenu du site web ;

  • contrôler la performance et la disponibilité de la base de données ;

  • contrôler l’état des services comme le service web comme apache2, httpd et nginx, etc. ;

  • contrôler les performances et la vitesse de chargement du site web ;

  • contrôler les mises à jour du CMS (Content Management System) ;

  • contrôler le service DNS.

L’objectif de cette partie est de présenter les services nécessaires pour superviser un site web avec Nagios. Ces services sont définis à partir des commandes définies dans les chapitres précédents. Nous allons prendre le site web exchange.nagios.org comme un exemple.

La première étape consiste à définir un nouvel hôte dans le fichier de configuration hosts.cfg comme l’illustre l’exemple suivant :

define host{ 
host_name                exchange.nagios.org 
hostgroups               sites-web-group 
alias                    exchange.nagios.org 
address                  66.228.58.94 
check_command            check-host-alive 
check_interval           3 
retry_interval           1 
check_attempts           5 
check_period             24x7 
contact_groups           web-server-admins 
notification_interval    30 
notification_period      24x7 
notification_options     d,u,r 
}      

Avant de commencer la définition des services, nous allons faciliter notre travail en définissant un modèle de service.

define service{ 
name                      Template-Website-Service 
check_interval            5 
retry_interval            1 
max_check_attempts        5 
check_period              24x7 
contact_groups           web-server-admins 
notification_interval    30 
notification_period      24x7 
notification_options     d,u,r 
register                 0 
}  

La prochaine étape consiste à définir les services de contrôle de notre site web, y compris :

  • l’utilisation du SSL (HTTPS) avec le port 443 ;

  • la date d’expiration du certificat SSL est suffisamment loin ;

  • renvoie un message de HTTP OK valide ;

  • la résolution DNS semble fonctionner ;

  • la réponse DNS correspond à ce que vous aviez lors de l’exécution de l’assistant ;

  • une chaîne de caractères particulière se trouve sur la page.

Un premier service consiste à contrôler la disponibilité du site web à travers le port 443 du protocole HTTPS. La commande check_https suffit pour assurer ce contrôle.

define service{ 
    use                     Template-Website-Service 
    host_name               exchange.nagios.org 
    service_description     Service_Web_HTTPS 
    check_command           check_https 
}

Nagios assure la surveillance des certificats SSL pour garantir leur validité. Nagios peut générer des alertes lorsque des certificats SSL sont près de leur date d’expiration, il aide les administrateurs à avoir le temps de renouveler leurs certificats avant que les problèmes ne surviennent. Nous allons utiliser la commande check_ssl_certificate ci-dessous :

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

Donc, le service Nagios assurant la surveillance des certificats SSL de notre site web est le suivant :

define service{ 
    use                     Template-Website-Service 
    host_name               exchange.nagios.org 
    service_description     ssl_certificate 
    check_command           check_ssl_certificate!30 
}

L’indisponibilité de service DNS implique aussi l’indisponibilité du site web. Pour cela, nous allons définir deux services : le premier utilise la commande check_nom_ip pour vérifier la résolution DNS du nom de domaine exchange.nagios.org à l’adresse IP 66.228.58.94. Alors que le deuxième service utilise la commande check_ip_nom pour vérifier la résolution DNS de l’adresse IP 66.228.58.94 au nom de domaine exchange.nagios.org.

define service{ 
    use                     Template-Website-Service 
    host_name               exchange.nagios.org 
    service_description     Dns Name To IP Resolution 
    check_command           check_nom_ip!66.228.58.94! 
}
define service{ 
    use                     Template-Website-Service 
    host_name               exchange.nagios.org 
    service_description     Dns IP To Name Resolution 
    check_command           check_ip_nom!exchange.nagios.org! 
}

Un dernier service consiste à vérifier l’existence de chaînes de caractères sur une page web. La mise en œuvre de suivi de contenu de site web efficace avec Nagios permet la détection rapide des pannes, le piratage et le détournement de site web par un hacker.

En utilisant la commande check_string ci-dessous, nous pouvons vérifier si une chaîne de caractères est présente dans la réponse du serveur web (le code HTML retourné).

define command{ 
    command_name 	check_string 
    command_line 	$USER1$/check_http -H $HOSTADDRESS$ -s $ARG1$ 
} 
 
Exemple de service utilisant la commande ci-dessus. 
 
define service{ 
    use                   Template-Website-Service 
    host_name             exchange.nagios.org 
    service_description   website defacement check 
    check_command         check_string!nagios 
}