This is a translation of the original English documentation page. Help us make it better.

Sidebar

Become a monitoring expert!
Sign up for Zabbix training

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.

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 (or 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.
Name Nom unique du scénario.
Intervalle d'actualisation A quelle fréquence le scénario sera exécuté.
Les suffixes de temps sont supportés, ex : 30s, 1m, 2h, 1d.
Les macros utilisateurs sont supportées. A noter : 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).
* TentativesNombre 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.
A noter* : 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.
Agent Choix du 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.
Proxy HTTP Vous pouvez spécifier un proxy HTTP à utiliser, en utilisant le format [protocol://][username[:password]@]proxy.example.com[:port].
Cela définit l'option cURL CURLOPT_PROXY.
Le préfixe facultatif protocol:// peut être utilisé pour spécifier des protocoles proxy alternatifs (la prise en charge du préfixe de protocole a été ajoutée dans cURL 7.21.7). Sans protocole spécifié, le proxy sera traité comme un proxy HTTP.
Par défaut, le port 1080 sera utilisé.
Si spécifié, le proxy écrasera les variables d'environnement liées au proxy comme 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 cohérence n'a lieu.
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.
A noter : seule l'authentification simple est prise en charge avec le proxy HTTP.
Les macros utilisateur peuvent être utilisées dans ce champ.
* 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.
Les macros utilisateur et les macros {HOST.*} sont prises en charge.
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 cURL option.
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.
Activé Le scénario est activé si 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éer 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 HTTP proxy 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 HTTP - positionnez la variable d'environnement HTTPS_PROXY pour l'utilisateur du serveur Zabbix. 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.

Les macros utilisateur secrètes ne doivent pas être utilisées dans les URL car elles seront résolue en "******".

Configuration des étapes

Paramètres d'étape :

Paramètre Description
* Nom* Nom unique de l'étape.
URL URL où se connecter et où récupérer les données. Par exemple :
https://www.example.com
http://www.example.com/download
Les noms de domaines peuvent être spécifiés en caractères Unicode. 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.
Variables can be used in the URL, using the {macro} syntax. 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.
Limité à 2048 caractères.
Champs de requête Variables HTTP GET pour l'URL.
Spécifié comme paires attribut/valeur.
Les valeurs sont automatiquement encodées en URL. Les valeurs des variables de scénario, des macros utilisateur ou des macros {HOST.*} sont résolues puis automatiquement codées en URL. L'utilisation d'une syntaxe {{macro}.urlencode()} doublera leur encodage URL.
Les macros utilisateurs et les macros {HOST.*} sont supportées.
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.
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.
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.
Suivre les redirections Cochez la case pour suivre les redirections HTTP.
Cela défini l'option cURL CURLOPT_FOLLOWLOCATION.
Mode de récupération Sélectionnez le mode de récupération :
Corps - récupérer uniquement le corps de la réponse HTTP
En-têtes - récupérer uniquement les en-têtes de la réponse HTTP
Corps et en-têtes - récupérer le corps et les en-têtes de la réponse HTTP
* 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
A noter : 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.
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.

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.

Configuring authentication

The Authentication tab allows you to configure scenario authentication options.

Authentication parameters:

Parameter Description
Authentication Authentication options.
None - no authentication used.
Basic authentication - basic authentication is used.
NTLM authentication - NTLM (Windows NT LAN Manager) authentication is used.
Selecting an authentication method will provide two additional fields for entering a user name and password.
User macros can be used in user and password fields, starting with Zabbix 2.2.
SSL verify peer Mark the checkbox to verify the SSL certificate of the web server.
The server certificate will be automatically taken from system-wide certificate authority (CA) location. You can override the location of CA files using Zabbix server or proxy configuration parameter SSLCALocation.
This sets the CURLOPT_SSL_VERIFYPEER cURL option.
This option is supported starting with Zabbix 2.4.
SSL verify host Mark the checkbox to verify that the Common Name field or the Subject Alternate Name field of the web server certificate matches.
This sets the CURLOPT_SSL_VERIFYHOST cURL option.
This option is supported starting with Zabbix 2.4.
SSL certificate file Name of the SSL certificate file used for client authentication. The certificate file must be in PEM1 format. If the certificate file contains also the private key, leave the SSL key file field empty. If the key is encrypted, specify the password in SSL key password field. The directory containing this file is specified by Zabbix server or proxy configuration parameter SSLCertLocation.
HOST.* macros and user macros can be used in this field.
This sets the CURLOPT_SSLCERT cURL option.
This option is supported starting with Zabbix 2.4.
SSL key file Name of the SSL private key file used for client authentication. The private key file must be in PEM1 format. The directory containing this file is specified by Zabbix server or proxy configuration parameter SSLKeyLocation.
HOST.* macros and user macros can be used in this field.
This sets the CURLOPT_SSLKEY cURL option.
This option is supported starting with Zabbix 2.4.
SSL key password SSL private key file password.
User macros can be used in this field.
This sets the CURLOPT_KEYPASSWD cURL option.
This option is supported starting with Zabbix 2.4.

[1] Zabbix supports certificate and private key files in PEM format only. In case you have your certificate and private key data in PKCS #12 format file (usually with extention *.p12 or *.pfx) you may generate the PEM file from it using the following commands:

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

Zabbix server picks up changes in certificates without a restart.

If you have client certificate and private key in a single file just specify it in a "SSL certificate file" field and leave "SSL key file" field empty. The certificate and key must still be in PEM format. Combining certificate and key is easy:

cat client.crt client.key > client.pem

Display

To view detailed data of defined web scenarios, go to Monitoring → Web or Latest data. Click on the scenario name to see more detailed statistics.

An overview of web monitoring scenarios can be viewed in Monitoring → Dashboard.

Extended monitoring

Sometimes it is necessary to log received HTML page content. This is especially useful if some web scenario step fails. Debug level 5 (trace) serves that purpose. This level can be set in server and proxy configuration files or using a runtime control option (-R log_level_increase="http poller,N", where N is the process number). The following examples demonstrate how extended monitoring can be started provided debug level 4 is already set:

Increase log level of all http pollers:
       shell> zabbix_server -R log_level_increase="http poller"
       
       Increase log level of second http poller:
       shell> zabbix_server -R log_level_increase="http poller,2"

If extended web monitoring is not required it can be stopped using the -R log_level_decrease option.

Extended monitoring

Sometimes it is necessary to log received HTML page content. This is especially useful if some web scenario step fails. Debug level 5 (trace) serves that purpose. This level can be set in server and proxy configuration files or using a runtime control option (-R log_level_increase="http poller,N", where N is the process number). The following examples demonstrate how extended monitoring can be started provided debug level 4 is already set:

Increase log level of all http pollers:
       shell> zabbix_server -R log_level_increase="http poller"
       
       Increase log level of second http poller:
       shell> zabbix_server -R log_level_increase="http poller,2"

If extended web monitoring is not required it can be stopped using the -R log_level_decrease option.