This is the documentation page for an unsupported version of Zabbix.
Is this not what you were looking for? Switch to the current version or choose one from the drop-down menu.

9. Supervision Web

Aperçu

Avec Zabbix, vous pouvez vérifier plusieurs aspects de la disponibilité des sites Web.

Pour effectuer une supervision Web, le serveur Zabbix doit être initialement configuré avec le support cURL (libcurl).

Pour activer la supervision Web, vous devez définir des scénarios Web. Un scénario Web consiste en une ou plusieurs requêtes HTTP ou "étapes". Les étapes sont exécutées périodiquement par le serveur Zabbix dans un ordre prédéfini. Si un hôte est supervisé par proxy, les étapes sont exécutées par le proxy.

Depuis Zabbix 2.2, les scénarios Web sont associés aux hôtes/modèles de la même manière que les éléments, les déclencheurs, etc. Cela signifie que les scénarios Web peuvent également être créés au niveau du modèle, puis appliqués à plusieurs hôtes en même temps.

Les informations suivantes sont collectées pour tout le scénario Web :

  • vitesse moyenne de téléchargement par seconde pour toutes les étapes du scénario
  • numéro de l'étape qui a échoué
  • dernier message d'erreur

Les informations suivantes sont collectées pour chaque étape de scénario Web :

  • vitesse de téléchargement par seconde
  • temps de réponse
  • code retour

Pour plus de détails, voir les éléments de supervision web.

Les données collectées lors de l'exécution de scénarios Web sont conservées dans la base de données. Les données sont automatiquement utilisées pour les graphiques, les déclencheurs et les notifications.

Zabbix peut également vérifier si une page HTML récupérée contient une chaîne prédéfinie. Il peut exécuter une connexion simulée et suivre un chemin de clics simulés sur la page.

La supervision Web Zabbix prend en charge à la fois HTTP et HTTPS. Lors de l'exécution d'un scénario Web, Zabbix suit éventuellement les redirections (voir l'option Suivre les redirections en dessous). Le nombre maximal de redirections est codé en dur à 10 (en utilisant l'option cURL CURLOPT_MAXREDIRS). Tous les cookies sont conservés lors de l'exécution d'un scénario unique.

Voir aussi les problèmes connus pour la supervision Web à l'aide du protocole HTTPS.

Configurer un scenario web

Pour configurer un scenario web :

  • Allez dans : Configuration → Hôtes (ou Modèles)
  • Cliquez sur Web dans la ligne de l'hôte/modèle
  • Cliquez sur Créer un scénario web à droite (ou sur le nom du scénario pour modifier un scénario existant)
  • Entrez les paramètres du scénario dans le formulaire

L'onglet Scénario vous permet de configurer les paramètres généraux d'un scénario Web.

Tous les champs de saisie obligatoires sont marqués d'un astérisque rouge.

Paramètres de scénario :

Paramètre Description
Hôte Nom de l'hôte/modèle auquel le scénario appartient.
Nom Nom unique du scénario.
Les macros utilisateurs et les macros {HOST.*} sont supportées depuis Zabbix 2.2.
Application Sélectionnez une application à laquelle le scénario appartiendra.
Les éléments du scénario Web seront regroupés sous l'application sélectionnée dans Surveillance → Dernières données.
Nouvelle application Entrez le nom de la nouvelle application pour le scénario.
Intervalle de mise à jour A quelle fréquence le scénario sera exécuté.
Les suffixes de temps sont supportés, ex : 30s, 1m, 2h, 1d, depuis Zabbix 3.4.0.
Les macros utilisateurs sont supportées depuis Zabbix 3.4.0.
Notez que si une macro utilisateur est utilisée et que sa valeur change (e.g. 5m → 30s), la prochaine vérification sera exécutée selon la valeur précédente (plus tard dans le futur avec les valeurs d'exemple).
Tentatives Nombre de tentatives d'exécution des étapes du scénario Web. En cas de problèmes réseau (timeout, absence de connectivité, etc.), Zabbix peut répéter plusieurs fois l'exécution d'une étape. Le chiffre positionné affectera également chaque étape du scénario. Vous pouvez spécifier jusqu'à 10 tentatives, la valeur par défaut est 1.
Note: Zabbix ne répètera pas une étape en raison d'un code de réponse erroné ou d'une non-concordance d'une chaîne requise.
Ce paramètre est pris en charge à partir de Zabbix 2.2.
Agent Sélectionnez un agent client.
Zabbix fera semblant d'être le navigateur sélectionné. Ceci est utile lorsqu'un site Web renvoie un contenu différent pour différents navigateurs.
Les macros utilisateur peuvent être utilisées dans ce champ, à partir de Zabbix 2.2.
Proxy HTTP Vous pouvez spécifier un proxy HTTP à utiliser, en utilisant le format suivant : http://[username[:password]@]proxy.mycompany.com[:port]
Par défaut, le port 1080 sera utilisé.
Si spécifié, le proxy remplacera les variables d'environnement liées au proxy, telles que http_proxy, HTTPS_PROXY. S'il n'est pas spécifié, le proxy n'écrasera pas les variables d'environnement liées au proxy.
La valeur saisie est transmise "telle quelle", aucune vérification de la validité n'est effectuée. Vous pouvez également entrer une adresse proxy SOCKS. Si vous spécifiez le mauvais protocole, la connexion échouera et l'élément ne sera plus pris en charge. En l'absence de protocole spécifié, le proxy sera traité comme un proxy HTTP.
Notez que seulement l'authentification simple est prise en charge avec le proxy HTTP.
Les macros utilisateur peuvent être utilisées dans ce champ.
Ce paramètre est pris en charge à partir de Zabbix 2.2.
Variables Variables pouvant être utilisées dans les étapes du scénario (URL, variables post).
Elles ont le format suivant :
{macro1}=value1
{macro2}=value2
{macro3}=regex:<regular expression>
Par exemple :
{username}=Alexei
{password}=kj3h5kJ34bd
{hostid}=regex:hostid is ([0-9]+)
Les macros peuvent ensuite être référencées dans les étapes sous la forme {username}, {password} et {hostid}. Zabbix les remplacera automatiquement par des valeurs réelles. Notez que les variables avec regex: ont besoin d'une étape pour obtenir la valeur de l'expression régulière afin que la valeur extraite ne puisse être appliquée qu'à l'étape suivante.
Si la partie valeur commence par "regex:", la partie après celle-ci est traitée comme une expression régulière qui recherche la page Web et, si elle est trouvée, stocke la correspondance dans la variable. Au moins un sous-groupe doit être présent pour que la valeur correspondante puisse être extraite. La correspondance des expressions régulières dans les variables est prise en charge depuis Zabbix 2.2.
Les macros utilisateur et les macros {HOST.*} sont pris en charge, depuis Zabbix 2.2.
Les variables sont automatiquement encodées en URL lorsqu'elles sont utilisées dans des champs de requête ou des données de formulaire pour des variables post, mais doivent être encodées manuellement lorsqu'elles sont utilisées en post brut ou directement dans l'URL.
En-têtes Les en-têtes HTTP personnalisés qui seront envoyés lors de l'exécution d'une requête.
Les en-têtes doivent être répertoriés en utilisant la même syntaxe qu'ils apparaîssent dans le protocole HTTP, en utilisant éventuellement certaines fonctionnalités supplémentaires prises en charge par l'option cURL CURLOPT_HTTPHEADER.
Par exemple :
Accept-Charset=utf-8
Accept-Language=en-US
Content-Type=application/xml; charset=utf-8
Les macros utilisateur et les macros {HOST.*} sont supportées.
La spécification des en-têtes personnalisés est supportée à partir de Zabbix 2.4.
Activer Le scénario est activé sur cette case est cochée, sinon - désactivé.

Notez que lors de l'édition d'un scénario existant, deux boutons supplémentaires sont disponibles dans le formulaire :

Créez un autre scénario basé sur les propriétés d'un scénario existant.
Supprimer l'historique et les données de tendance du scénario. Cela obligera le serveur à exécuter le scénario immédiatement après la suppression des données.

Si le champs Proxy HTTP est laissé vide, un autre moyen d'utiliser un proxy HTTP est de positionner les variables d'environnement liées au proxy.

Pour les vérifications HTTP - positionnez la variable d'environnement http_proxy pour l'utilisateur du serveur Zabbix. Par exemple : //http_proxy=http:%%//%%proxy_ip:proxy_port//.

Pour les vérifications HTTPS - positionnez la variable d'environnement HTTPS_PROXY. Par exemple, //HTTPS_PROXY=http:%%//%%proxy_ip:proxy_port//. Plus de détails sont disponibles en exécutant la commande : # man curl.

L'onglet Étapes vous permet de configurer les étapes du scénario web. Pour ajouter une étape d'un scénario web, cliquez sur Ajouter dans le bloc Étapes.

Configuration des étapes

Paramètres d'étape :

Paramètre Description
Nom Nom unique de l'étape.
Les macros utilisateur et les macros {HOST.*} sont supportés depuis Zabbix 2.2.
URL URL où se connecter et où récupérer les données. Par exemple :
https://www.google.com
http://www.zabbix.com/download
Les noms de domaines peuvent être spécifiés en caractères Unicode depuis Zabbix 3.4. Ils sont automatiquement convertis en ASCII lors de l'exécution de l'étape du scénario web.
Le bouton Analyser peut être utilisé pour séparer les champs de requête facultatifs (comme ?name=Admin&password=mypassword) de l'URL, et ainsi placer les attributs et les valeurs dans le Champs de requête pour un encodage automatique d'URL.
Les variables peuvent être utilisées dans l'URL, en utilisant la syntaxe {macro}. Les variables peuvent être encodée manuellement en utilisant la syntaxe {{macro}.urlencode()}.
Les macros utilisateurs et les macros {HOST.*} sont supportées depuis Zabbix 2.2.
Limité à 2048 caractères depuis Zabbix 2.4.
Champs de requête Variables HTTP GET pour l'URL.
Spécifié comme paires attribut/valeur.
Les valeurs sont encodée automatiquement. Les valeurs issues des variables de scénario, les macros utilisateurs ou les macros {HOST.*} sont supportées depuis Zabbix 2.2.
Champs Post Variables HTTP POST.
Dans le mode Données de formulaire, spécifié comme paires attribut/valeur.
Les valeurs sont encodées automatiquement. Les valeurs issues des variables de scénario, les macros utilisateurs ou les macros {HOST.*} sont résolues et sont encodées automatiquement.
Dans le mode Données brutes, les paires attribut/valeur sont affichées sur une seule ligne et concaténées avec le symbole &.
Les valeurs brutes peuvent être encodées/décodées manuellement en utilisant une syntaxe {{macro}.urlencode()} ou {{macro}.urldecode()}.
Par exemple : id=2345&userid={user}
Si {user} est défini comme variable du scénario web, il sera remplacé par sa valeur lors de l'exécution de l'étape. Si vous souhaitez encoder la variable au format URL, il faut substituer {user} par {{user}.urlencode()}.
Les macros utilisateurs et les macros {HOST.*} sont supportées depuis Zabbix 2.2.
Variables Variables qui peuvent être utilisées pour les fonctions GET et POST dans l'étape.
Spécifié comme paires d'attribut/valeur.
Les variables d'étape remplacent les variables de scénario ou les variables de l'étape précédente. Néanmoins, la valeur d'une variable d'étape affecte uniquement l'étape suivante (et non pas l'étape actuelle).
Elles ont le format suivant :
{macro}=value
{macro}=regex:<regular expression>
Pour plus d'informations, voir la description des variables au niveau du scenario.
Avoir des variables d'étape est supporté depuis Zabbix 2.2.
Les variables sont automatiquement encodées au format URL quand elles sont utilisées dans le champs de requête ou dans les données de formulaire pour les variables post, mais doivent être encodées manuellement quand elles sont utilisées dans les données brutes ou directement dans l'URL.
En-têtes En-têtes HTTP personnalisés à envoyer lors de l'exécution d'une requête.
Spécifié sous forme de paires d'attributs et de valeurs.
Les en-têtes au niveau de l'étape remplaceront les en-têtes spécifiés pour le scénario.
Par exemple, la définition d'un attribut 'User-Agent' sans valeur supprimera la valeur User-Agent définie au niveau du scénario.
Les macros utilisateurs et les macros {HOST.*} sont supportées.
Cela défini l'option cURL CURLOPT_HTTPHEADER.
La spécification d'en-têtes personnalisés est supportée depuis Zabbix 2.4.
Suivre les redirections Cochez la case pour suivre les redirections HTTP.
Cela défini l'option cURL CURLOPT_FOLLOWLOCATION.
Cette option est supportée depuis Zabbix 2.4.
Récupérer uniquement les en-têtes Cochez la case pour extraire uniquement les en-têtes de la réponse HTTP.
Cela défini l'option cURL CURLOPT_NOBODY.
Cette option est supportée depuis Zabbix 2.4.
Expiration Zabbix ne passera pas plus de temps que prévu à traiter l’URL (maximum 1 heure). En réalité, ce paramètre définit le délai maximal de connexion à l'URL et le délai maximal d'exécution d'une requête HTTP. Par conséquent, Zabbix ne passera pas plus de 2xExpiration secondes sur l’étape.
Les suffixes temporels sont supportés, ex : 30s, 1m, 1h. Les macros utilisateur sont supportées.
Chaîne requise Modèle requis d'expression régulière.
À moins que le contenu récupéré (HTML) ne corresponde au modèle requis, l'étape échouera. Si vide, aucune vérification sur la chaîne n'est effectuée. \\Par exemple :
Homepage of Zabbix
Welcome.*admin
Remarque : Les expressions régulières créées dans l'interface Zabbix ne sont pas supportées dans ce champs.
Les macros utilisateur et les macros {HOST.*} sont supportées depuis Zabbix 2.2.
Code d'état requis Liste des codes d'état HTTP attendus. Si Zabbix obtient un code qui ne figure pas dans la liste, l'étape échouera.
S'il est vide, aucune vérification de code d'état n'est effectuée.
Par exemple : 200,201,210-299
Les macros utilisateur sont supportées depuis Zabbix 2.2.

Toute modification apportée aux étapes du scénario Web ne sera enregistrée que lorsque l'intégralité du scénario sera enregistré.

Voir aussi un exemple concret de la configuration des étapes de surveillance Web.

Configuration de l'authentification

L'onglet Authentification vous permet de configurer les options d'authentification du scénario.

Paramètres d'authentification :

Parameter Description
Authentification Options d'authentification.
Aucun - aucune authentification n'est utilisée.
Basique - l'authentification basique est utilisée.
NTLM - l'authentification NTLM (Windows NT LAN Manager) est utilisée.
La sélection d'une méthode d'authentification fournira deux champs supplémentaires pour la saisie d'un nom d'utilisateur et d'un mot de passe.
Des macros utilisateur peuvent être utilisées dans les champs utilisateur et mot de passe, à partir de Zabbix 2.2.
Vérifier le pair SSL Cochez la case pour vérifier le certificat SSL du serveur Web.
Le certificat du serveur sera automatiquement extrait de l'emplacement de l'autorité de certification à l'échelle du système. Vous pouvez remplacer l'emplacement des fichiers de l'autorité de certification à l'aide du serveur Zabbix ou du paramètre de configuration du proxy SSLCALocation.
Ceci défini l'option cURL CURLOPT_SSL_VERIFYPEER.
Cette option est supportée depuis Zabbix 2.4.
Vérifier l'hôte SSL Cochez la case pour vérifier que le champ Nom commun ou le champ Autre nom d'objet du certificat du serveur Web correspond.
Ceci défini l'option cURL CURLOPT_SSL_VERIFYHOST.
Cette option est supportée depuis Zabbix 2.4.
Fichier de certificat SSL Nom du fichier de certificat SSL utilisé pour l'authentification du client. Le fichier de certificat doit être au format PEM1. Si le fichier de certificat contient également la clé privée, laissez le champ Fichier de clé SSL vide. Si la clé est cryptée, spécifiez le mot de passe dans le champ Mot de passe de la clé SSL. Le répertoire contenant ce fichier est spécifié par le paramètre de configuration du serveur Zabbix ou du proxy SSLCertLocation.
Les macros HOST.* et les macros utilisateur peuvent être utilisées dans ce champs.
Ceci défini l'option cURL CURLOPT_SSLCERT.
Cette option est supportée depuis Zabbix 2.4.
Fichier de clé SSL Nom du fichier de clé privée SSL utilisé pour l'authentification du client. Le fichier de clé privée doit être au format PEM1. Le répertoire contenant ce fichier est spécifié par le paramètre de configuration du serveur Zabbix ou du proxy SSLKeyLocation.
Les macros HOST.* et les macros utilisateur peuvent être utilisées dans ce champs.
Ceci défini l'option cURL CURLOPT_SSLKEY.
Cette option est supportée depuis Zabbix 2.4.
Mot de passe de la clé SSL Mot de passe du fichier de clé privée SSL.
Les macros utilisateur peuvent être utilisées dans ce champ.
Ceci défini l'option cURL CURLOPT_KEYPASSWD.
Cette option est supportée depuis Zabbix 2.4.

[1] Zabbix prend en charge les fichiers de certificat et de clé privée au format PEM uniquement. Si vos données de certificat et de clé privée sont dans un fichier au format PKCS #12 (généralement avec l'extension *.p12 ou *.pfx), vous pouvez générer le fichier PEM à l'aide des commandes suivantes :

openssl pkcs12 -in ssl-cert.p12 -clcerts -nokeys -out ssl-cert.pem
       openssl pkcs12 -in ssl-cert.p12 -nocerts -nodes  -out ssl-cert.key

Le serveur Zabbix enregistre les modifications des certificats sans redémarrage.

Si vous avez un certificat client et une clé privée dans un seul fichier, indiquez-le simplement dans un champ "Fichier de certificat SSL" et laissez le champ "Fichier de clé SSL" vide. Le certificat et la clé doivent toujours être au format PEM. La combinaison du certificat et de la clé est simple :

cat client.crt client.key > client.pem

Affichage

Pour afficher les données détaillées des scénarios Web définis, accédez à Surveillance → Web ou Dernières données. Cliquez sur le nom du scénario pour voir des statistiques plus détaillées.

Un aperçu des scénarios Web peut être visualisé dans Surveillance → Tableau de bord.

Supervision étendue

Parfois, il est nécessaire de consigner le contenu de la page HTML reçue. Ceci est particulièrement utile si une étape du scénario Web échoue. Le niveau de débogage 5 (trace) sert à cela. Ce niveau peut être défini dans les fichiers de configuration du serveur et du proxy ou à l'aide d'une option de runtime control (-R log_level_increase="http poller,N", N étant le numéro du processus). Les exemples suivants montrent comment la supervision étendue peut être démarrée à condition que le niveau de débogage 4 soit déjà défini :

Augmentez le niveau de journalisation de tous les pollers http :
       shell> zabbix_server -R log_level_increase="http poller"
       
       Augmentez le niveau de journalisation du deuxième poller http :
       shell> zabbix_server -R log_level_increase="http poller,2"

Si la supervision Web étendue n'est plus nécessaire, vous pouvez l'arrêter à l'aide de l'option -R log_level_decrease.