Surveiller un site Web

Comment superviser un hébergement mutualisé lorsque vous ne connaissez pas l’adresse IP du serveur ? C’est ce que nous allons voir dans cet article. Nous utiliserons le plugin historique check_http et ensuite le plugin centreon.
Nous en profiterons pour utiliser les templates d’hôtes et de services avec les macros personnalisées. Les commandes clapi seront ajoutées en encart.
Nous en profiterons pour utiliser les templates d’hôtes et de services avec les macros personnalisées. Les commandes clapi seront ajoutées en encart.
1 mise en situation
Nous allons superviser un site Web mutualisé se trouvant sur la toile. Nous utiliserons le protocole http et https. Comme nous ne pouvons pas utiliser le protocole icmp pour la configuration de l’hôte, nous allons créer notre commande spécifique pour les sites Web. Voici le schéma global de notre configuration.

schéma de principe
Nous utiliserons le plugin historique check_http et deux commandes check_host_alive_http pour le modèle d’hôte et check_http pour le modèle de service. Ensuite nous aurons deux modèles d’hôtes : le modèle Modele_site_web_http pour une connexion http classique associé au modèle de service SVC_http_80 et le modèle Modele_site_web_https pour une connexion sécurisée en https associé au modèle de service SVC_https_443. Les deux modèles de service sont basés sur le modèle generic_service créé lors de la première configuration de Centreon.
2 Utilisation du plugin check_http
2.1 Création des commandes check_host_alive_http et check_http
Nous allons créer tout d’abord deux commandes. La première commande nous servira pour les modèles d’hôte. Nous nous baserons sur la commande check_host_alive.
2.1a commande check_host_alive_http

Création de la commande check_host_alive_http
La ligne de commande ci-dessous :
$USER1$/check_http -H $HOSTADDRESS$ -p $_HOSTPORT$ -c $_HOSTCRITICAL$ -w $_HOSTWARNING$
Pour rendre la commande plus universelle, nous utiliserons des macros personnalisées pour les hôtes :
- $_HOSTPORT$ pour le protocole http,
- $_HOSTWARNING$ pour le seuil warning,
- $_HOSTCRITICAL$ pour le seuil critical.
Centreon-Clapi
centreon -u admin -p password -o CMD -a ADD -v 'check_host_alive_http;check;$USER1$/check_http -H $HOSTADDRESS$ -p $_HOSTPORT$ -c $_HOSTCRITICAL$ -w $_HOSTWARNING$'
2.1b commande check_http

Création de la commande check_http
La ligne de commande ci-dessous :
$USER1$/check_http -H $HOSTADDRESS$ -p $_SERVICEPORT$ -c $_SERVICECRITICAL$ -w $_SERVICEWARNING$
Comme pour la commande précédente, nous utiliserons des macros personnalisées mais pour les services :
- $_SERVICEPORT$ pour le protocole http,
- $_SERVICEWARNING$ pour le seuil warning,
- $_SERVICECRITICAL$ pour le seuil critical.
Centreon-Clapi
centreon -u admin -p password -o CMD -a ADD -v 'check_http;check;$USER1$/check_http -H $HOSTADDRESS$ -p $_SERVICEPORT$ -c $_SERVICECRITICAL$ -w $_SERVICEWARNING$'
centreon -u admin -p password -o CMD -a setparam -v "check_http;graph;Latency"
2.2 Création des modèles d’hôte
Nous allons créer deux modèles d’hôte, un pour la connexion http classique en port 80 et l’autre pour la connexion sécurisée en https et port 443. Il sera très facile de personnaliser un nouvel hôte qui aurait un port particulier (exemple port 8080) en surchargeant l’hôte avec un nouveau paramètre pour la macro personnalisée PORT du modèle d’hôte. Chaque modèle d’hôte sera associé à un modèle de service que vous découvrirez plus loin.
2.2a modèle Modele_site_web_http

Création du modèle Model_site_web_http, onglet Configuration de l’hôte

Création du modèle Model_site_web_http, onglet Notification
Centreon-Clapi
centreon -u admin -p password -o HTPL -a ADD -v "Modele_site_web_http;Web_http;;;;"
centreon -u admin -p password -o HTPL -a setparam -v "Modele_site_web_http;check_command;check_host_alive_http"
centreon -u admin -p password -o HTPL -a setparam -v "Modele_site_web_http;check_period;24x7"
centreon -u admin -p password -o HTPL -a setparam -v "Modele_site_web_http;notification_period;24x7"
centreon -u admin -p password -o HTPL -a setparam -v "Modele_site_web_http;host_max_check_attempts;5"
centreon -u admin -p password -o HTPL -a setparam -v "Modele_site_web_http;host_active_checks_enabled;1"
centreon -u admin -p password -o HTPL -a setparam -v "Modele_site_web_http;host_passive_checks_enabled;0"
centreon -u admin -p password -o HTPL -a setparam -v "Modele_site_web_http;host_checks_enabled;2"
centreon -u admin -p password -o HTPL -a setparam -v "Modele_site_web_http;host_obsess_over_host;2"
centreon -u admin -p password -o HTPL -a setparam -v "Modele_site_web_http;host_check_freshness;2"
centreon -u admin -p password -o HTPL -a setparam -v "Modele_site_web_http;host_event_handler_enabled;2"
centreon -u admin -p password -o HTPL -a setparam -v "Modele_site_web_http;host_flap_detection_enabled;2"
centreon -u admin -p password -o HTPL -a setparam -v "Modele_site_web_http;host_process_perf_data;2"
centreon -u admin -p password -o HTPL -a setparam -v "Modele_site_web_http;host_retain_status_information;2"
centreon -u admin -p password -o HTPL -a setparam -v "Modele_site_web_http;host_retain_nonstatus_information;2"
centreon -u admin -p password -o HTPL -a setparam -v "Modele_site_web_http;host_notification_interval;0"
centreon -u admin -p password -o HTPL -a setparam -v "Modele_site_web_http;host_notification_options;d,u,r,f"
centreon -u admin -p password -o HTPL -a setparam -v "Modele_site_web_http;host_notifications_enabled;1"
centreon -u admin -p password -o HTPL -a setparam -v "Modele_site_web_http;contact_additive_inheritance;0"
centreon -u admin -p password -o HTPL -a setparam -v "Modele_site_web_http;cg_additive_inheritance;0"
centreon -u admin -p password -o HTPL -a setparam -v "Modele_site_web_http;host_locked;0"
centreon -u admin -p password -o HTPL -a setparam -v "Modele_site_web_http;host_register;0"
centreon -u admin -p password -o HTPL -a setparam -v "Modele_site_web_http;host_activate;1"
centreon -u admin -p password -o HTPL -a setmacro -v "Modele_site_web_http;port;80;;':'"
centreon -u admin -p password -o HTPL -a setmacro -v "Modele_site_web_http;critical;4;;''"
centreon -u admin -p password -o HTPL -a setmacro -v "Modele_site_web_http;warning;3;;''"
centreon -u admin -p password -o HTPL -a addcontactgroup -v "Modele_site_web_http;Supervisors"
2.2b modèle Modele_site_web_https

Création du modèle Model_site_web_https, onglet Configuration de l’hôte
La configuration de la notification est identique au premier modèle.
Centreon-Clapi
centreon -u admin -p password -o HTPL -a ADD -v "Modele_site_web_https;Web_https;;;;"
centreon -u admin -p password -o HTPL -a setparam -v "Modele_site_web_https;check_command;check_host_alive_http"
centreon -u admin -p password -o HTPL -a setparam -v "Modele_site_web_https;check_period;24x7"
centreon -u admin -p password -o HTPL -a setparam -v "Modele_site_web_https;notification_period;24x7"
centreon -u admin -p password -o HTPL -a setparam -v "Modele_site_web_https;host_max_check_attempts;5"
centreon -u admin -p password -o HTPL -a setparam -v "Modele_site_web_https;host_active_checks_enabled;1"
centreon -u admin -p password -o HTPL -a setparam -v "Modele_site_web_https;host_passive_checks_enabled;0"
centreon -u admin -p password -o HTPL -a setparam -v "Modele_site_web_https;host_checks_enabled;2"
centreon -u admin -p password -o HTPL -a setparam -v "Modele_site_web_https;host_obsess_over_host;2"
centreon -u admin -p password -o HTPL -a setparam -v "Modele_site_web_https;host_check_freshness;2"
centreon -u admin -p password -o HTPL -a setparam -v "Modele_site_web_https;host_event_handler_enabled;2"
centreon -u admin -p password -o HTPL -a setparam -v "Modele_site_web_https;host_flap_detection_enabled;2"
centreon -u admin -p password -o HTPL -a setparam -v "Modele_site_web_https;host_process_perf_data;2"
centreon -u admin -p password -o HTPL -a setparam -v "Modele_site_web_https;host_retain_status_information;2"
centreon -u admin -p password -o HTPL -a setparam -v "Modele_site_web_https;host_retain_nonstatus_information;2"
centreon -u admin -p password -o HTPL -a setparam -v "Modele_site_web_https;host_notification_interval;0"
centreon -u admin -p password -o HTPL -a setparam -v "Modele_site_web_https;host_notification_options;d,u,r,f"
centreon -u admin -p password -o HTPL -a setparam -v "Modele_site_web_https;host_notifications_enabled;1"
centreon -u admin -p password -o HTPL -a setparam -v "Modele_site_web_https;contact_additive_inheritance;0"
centreon -u admin -p password -o HTPL -a setparam -v "Modele_site_web_https;cg_additive_inheritance;0"
centreon -u admin -p password -o HTPL -a setparam -v "Modele_site_web_https;host_locked;0"
centreon -u admin -p password -o HTPL -a setparam -v "Modele_site_web_https;host_register;0"
centreon -u admin -p password -o HTPL -a setparam -v "Modele_site_web_https;host_activate;1"
centreon -u admin -p password -o HTPL -a setmacro -v "Modele_site_web_https;port;443 -S;;':'"
centreon -u admin -p password -o HTPL -a setmacro -v "Modele_site_web_https;critical;4;;''"
centreon -u admin -p password -o HTPL -a setmacro -v "Modele_site_web_https;warning;3;;''"
centreon -u admin -p password -o HTPL -a addcontactgroup -v "Modele_site_web_https;Supervisors"
2.3 Création des modèles de service
Continuons par les modèles de services. Ils utiliserons la commande check_http.
2.3a modèle SVC_http_80

Création du modèle SVC_http_80, onglet Informations générales

Création du modèle SVC_http_80, onglet Relations
Centreon-Clapi
centreon -u admin -p password -o STPL -a ADD -v "SVC_http_80;Http_80;generic-service"
centreon -u admin -p password -o STPL -a setparam -v "SVC_http_80;check_command;check_http
centreon -u admin -p password -o STPL -a setparam -v "SVC_http_80;service_is_volatile;2
centreon -u admin -p password -o STPL -a setparam -v "SVC_http_80;service_normal_check_interval;10
centreon -u admin -p password -o STPL -a setparam -v "SVC_http_80;service_retry_check_interval;5
centreon -u admin -p password -o STPL -a setparam -v "SVC_http_80;service_active_checks_enabled;2
centreon -u admin -p password -o STPL -a setparam -v "SVC_http_80;service_passive_checks_enabled;2
centreon -u admin -p password -o STPL -a setparam -v "SVC_http_80;service_parallelize_check;2
centreon -u admin -p password -o STPL -a setparam -v "SVC_http_80;service_obsess_over_service;2
centreon -u admin -p password -o STPL -a setparam -v "SVC_http_80;service_check_freshness;2
centreon -u admin -p password -o STPL -a setparam -v "SVC_http_80;service_event_handler_enabled;2
centreon -u admin -p password -o STPL -a setparam -v "SVC_http_80;service_flap_detection_enabled;2
centreon -u admin -p password -o STPL -a setparam -v "SVC_http_80;service_process_perf_data;2
centreon -u admin -p password -o STPL -a setparam -v "SVC_http_80;service_retain_status_information;2
centreon -u admin -p password -o STPL -a setparam -v "SVC_http_80;service_retain_nonstatus_information;2
centreon -u admin -p password -o STPL -a setparam -v "SVC_http_80;service_notifications_enabled;2
centreon -u admin -p password -o STPL -a setparam -v "SVC_http_80;contact_additive_inheritance;0
centreon -u admin -p password -o STPL -a setparam -v "SVC_http_80;cg_additive_inheritance;0
centreon -u admin -p password -o STPL -a setparam -v "SVC_http_80;service_locked;0
centreon -u admin -p password -o STPL -a setparam -v "SVC_http_80;service_register;0
centreon -u admin -p password -o STPL -a setparam -v "SVC_http_80;service_activate;1
centreon -u admin -p password -o STPL -a setmacro -v "SVC_http_80;port;80"
centreon -u admin -p password -o STPL -a setmacro -v "SVC_http_80;critical;3"
centreon -u admin -p password -o STPL -a setmacro -v "SVC_http_80;warning;2"
centreon -u admin -p password -o STPL -a addhosttemplate -v "SVC_http_80;Modele_site_web_http"
2.3b modèle SVC_https_443

Création du modèle SVC_https_443, onglet Informations générales

Création du modèle SVC_https_443, onglet notification
2.4 Création des hôtes « site web »
Maintenant, nous pouvons créer facilement notre supervision de site web. Par exemple, pour superviser un site comme par exemple mon site personnel Sugarbug, il suffira de créer l’hôte suivant en utilisant le modèle d’hôte Modele_site_web_http.

Création de l’hôte
Automatiquement, le service check_http sera associé à la création de l’hôte.

Création automatique du service
Un site web sécurisé avec une connexion en https se fera de la même manière avec le modèle Modele_site_web_https.
Centreon-Clapi
centreon -u admin -p password -o HOST -a add -v "Site_Sugarbug;Site Web Sugarbug;www.sugarbug.web4me.fr;;Central;"
centreon -u admin -p password -o HOST -a addtemplate -v "Site_Sugarbug;Modele_site_web_http"
centreon -u admin -p password -o HOST -a applytpl -v "Site_Sugarbug"
3 Test de l’hôte avec le plugin check_http
Appliquez la configuration et attendez quelques minutes pour obtenir un graphique.

Graphe du site Sugarbug
Et là, vous me dites, mais c’est un encéphalogramme plat ! En fait les deux métriques size et time récupérées avec les données de performances ne sont pas à la même échelle. la métrique time affiche les secondes et la métrique size affiche des octets et fatalement des grandeurs totalement différentes. Dans notre graphique nous avons un facteur de 10000 entre la valeur time et la valeur size. Il est donc normal que vous ne pouvez pas visualiser la latence du site Web. Pour remédier à ce problème, première solution, séparer les métriques du graphe en cochant la case à cocher split.

Graphe du site Sugarbug
Deuxième solution plus élégante, nous allons cacher la métrique size. Celle-ci n’a pas trop d’intérêt pour vérifier la latence de notre site. Pour réaliser cette opération, sélectionnez le menu administration / parameters. Cliquez sur le lien data de la section Performance Management.

Filtrez par le nom de l’hôte recherché. Ensuite, cliquez sur le service pour obtenir les métriques.

Cochez le métrique que vous voulez effacer.

Sélectionnez l’action « Hide graphs of selected Services »

La métrique size est positionnée à Hidden=yes.

Le graphe n’affichera qu’une seule courbe, la plus représentative pour mesurer les latences du site Web. Il n’y a plus besoin de cocher la case.

Autre avantage, le graphe s’affiche avec une seule courbe dans la vue temps réels.
4 Utilisation du plugin Centreon
4.1 Exemples d’utilisation
Nous allons utiliser maintenant le plugin réalisé par Centreon, vous trouverez les explications de base avec cet article les nouveaux plugins Centreon. Nous aurons besoin du plugin apps::protocols::http::plugin, celui-ci contient plusieurs modes comme vous pouvez le constater :
cd /usr/lib/nagios/plugins/ ./centreon_plugins.pl --plugin=apps::protocols::http::plugin --list-mode Plugin Description: Check HTTP or HTTPS webpage. Global Options: --mode Choose a mode. --dyn-mode Specify a mode with the path (separated by '::'). --list-mode List available modes. --mode-version Check minimal version of mode. If not, unknown error. --version Display plugin version. Modes Available: expected-content json-content response soap-content
Le mode qui nous intéresse se nomme response. Pour obtenir les mêmes spécificités que le plugin check_http, voici la ligne de commande et son résultat :
./centreon_plugins.pl --plugin=apps::protocols::http::plugin --mode=response --hostname=127.0.0.1 OK: Response time 0.447s | 'time'=0.447s;;;0; 'size'=11104B;;;0;
De plus ce plugin nous permet de supprimer la métrique size qui ne nous intéresse pas comme le montre la commande ci-dessous :
./centreon_plugins.pl --plugin=apps::protocols::http::plugin --mode=response --hostname=127.0.0.1 --filter-perfdata=time OK: Response time 0.521s | 'time'=0.521s;;;0;

le graphe récupéré à partir de ce plugin
Pour un site en https, il suffira de saisir cette commande :
./centreon_plugins.pl --plugin=apps::protocols::http::plugin --mode=response --hostname=192.168.0.240 --proto=https --port=443 OK: Response time 0.429s | 'time'=0.429s;;;0; 'size'=579B;;;0;
4.2 adaptation de la commande Centreon
Il est très facile de modifier la commande précédente.

La commande check_http modifiée
La ligne de commande ci-dessous :
$USER1$/centreon_plugins.pl --plugin=apps::protocols::http::plugin --mode=response --hostname=$HOSTADDRESS$ --filter-perfdata=time --port=$_SERVICEPORT$ --critical=$_SERVICECRITICAL$ --warning=$_SERVICEWARNING$
4.3 autre utilisation du plugin
On peut utiliser le plugin pour tester une authentification à une application web. Par exemple, prenons le cas de phpmyadmin, nous pouvons tester une authentification d’un utilisateur. Nous utiliserons la commande suivante :
./centreon_plugins.pl --plugin=apps::protocols::http::plugin --mode=expected-content --hostname=192.168.0.250 --method='POST' --post-param='pma_username=root' --post-param='pma_password=password’ --cookies-file='/tmp/lwp_cookies.dat' --urlpath='/phpmyadmin/index.php' --expected-string='pma_navigation’Résultat
OK: 'pma_navigation' is present in content. | 'time'=0.980s;;;0; 'size'=50948B;;;0;
Je vous conseille d’utiliser un navigateur avec des outils de développement pour trouver les paramètres nécessaires pour l’authentification. Le paramètre --debug est très utile pour afficher la réponse du serveur et adapter le paramètre --expected-string. Il faut trouver une chaîne de caractères exploitable qui sera renvoyé par le serveur Web seulement lorsque l’authentification est réussie.