7 Surveillance Web
Aperçu
Avec Zabbix, vous pouvez vérifier plusieurs aspects de la disponibilité des sites web.\
Pour effectuer la supervision web, le serveur Zabbix doit être initialement configuré avec la prise en charge de cURL (libcurl).
Pour activer la supervision web, vous devez définir des scénarios web. Un scénario web se compose d'une ou de 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 un proxy, les étapes sont exécutées par le proxy.
Les scénarios web sont rattachés aux hôtes/modèles de la même manière que les items, les déclencheurs, etc. Cela signifie que les scénarios web peuvent également être créés au niveau d'un modèle, puis appliqués à plusieurs hôtes en une seule opération.
Les informations suivantes sont collectées dans tout scénario web :
- vitesse moyenne de téléchargement par seconde pour toutes les étapes de l'ensemble du scénario
- numéro de l'étape ayant échoué
- dernier message d'erreur
Les informations suivantes sont collectées pour chaque étape d'un scénario web :
- vitesse de téléchargement par seconde
- temps de réponse
- code de réponse
Pour plus de détails, voir les items de supervision web.
Les données collectées lors de l'exécution des scénarios web sont conservées dans la base de données. Ces 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 de souris simulés sur la page.
La supervision web de Zabbix prend en charge HTTP et HTTPS. Lors de l'exécution d'un scénario web, Zabbix suivra éventuellement les redirections (voir l'option Follow redirects ci-dessous). Le nombre maximal de redirections est codé en dur à 10 (en utilisant l'option cURL CURLOPT_MAXREDIRS). Tous les cookies sont conservés pendant l'exécution d'un scénario unique.
Configuration d'un scénario web
Pour configurer un scénario web :
- Allez dans : Collecte de données → 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)
- Saisissez 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 du scénario :
| Parameter | Description |
|---|---|
| Nom | Nom unique du scénario. Les macros utilisateur sont prises en charge. Notez que si des macros utilisateur sont utilisées, ces macros resteront non résolues dans les noms des éléments de supervision web. |
| Intervalle de mise à jour | Fréquence d’exécution du scénario. Les suffixes temporels sont pris en charge, par ex. 30s, 1m, 2h, 1d. Les macros utilisateur sont prises en charge. Notez que si une macro utilisateur est utilisée et que sa valeur est modifiée (par ex. 5m → 30s), la prochaine vérification sera exécutée selon la valeur précédente (plus loin dans le futur avec les valeurs de l’exemple). Les nouveaux scénarios web seront vérifiés dans les 60 secondes suivant leur création. |
| Tentatives | Nombre de tentatives d’exécution des étapes du scénario. En cas de problèmes réseau (délai d’attente, absence de connectivité, etc.), Zabbix peut répéter l’exécution d’une étape plusieurs fois. La valeur définie affectera de manière égale chaque étape du scénario. Jusqu’à 10 tentatives peuvent être spécifiées, la valeur par défaut est 1. Remarque : Zabbix ne répétera pas une étape en raison d’un code de réponse incorrect ou d’une non-correspondance d’une chaîne requise. |
| Agent | Sélectionnez un agent client. Zabbix se fera passer pour le navigateur sélectionné. Cela est utile lorsqu’un site web renvoie un contenu différent selon le navigateur. Des macros utilisateur peuvent être utilisées dans ce champ. |
| Proxy HTTP | Vous pouvez spécifier un proxy HTTP à utiliser, au 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 d’autres protocoles de proxy (la prise en charge du préfixe de protocole a été ajoutée dans cURL 7.21.7). Si aucun protocole n’est spécifié, le proxy sera traité comme un proxy HTTP.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 ne remplacera pas les variables d’environnement liées au proxy. La valeur saisie est transmise « telle quelle », sans aucune vérification de validité. Vous pouvez également saisir l’adresse d’un proxy SOCKS. Si vous spécifiez un protocole incorrect, la connexion échouera et l’élément deviendra non pris en charge. Notez que seule l’authentification simple est prise en charge avec le proxy HTTP. Des 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> {macro4}=jsonpath:<jsonpath> {macro5}=xmlxpath:<xmlxpath> {macro6}={{macro}.function()} (voir fonctions de macro) Par exemple : {username}=Alexei {password}=kj3h5kJ34bd {hostid}=regex:hostid is ([0-9]+) {url}=jsonpath:$.host_url {status}=xmlxpath://host/response/status {newvar}={{myvar}.btoa()} Les macros peuvent ensuite être référencées dans les étapes sous la forme {username}, {password}, {hostid}, etc. Zabbix les remplacera automatiquement par les valeurs réelles. Notez que les variables avec regex: nécessitent une étape pour obtenir la valeur de l’expression régulière ; la valeur extraite ne peut donc être appliquée qu’à l’étape suivante.Si la partie valeur commence par regex:, la partie qui suit est traitée comme une expression régulière qui recherche dans la page web et, si elle est trouvée, stocke la correspondance dans la variable. Au moins un sous-groupe doit être présent afin que la valeur correspondante puisse être extraite.Les macros utilisateur et les macros} 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 les variables post, mais doivent être encodées manuellement en URL lorsqu’elles sont utilisées dans un post brut ou directement dans l’URL. |
| En-têtes | Les en-têtes HTTP sont utilisés lors de l’exécution d’une requête. Des en-têtes par défaut et personnalisés peuvent être utilisés. Les en-têtes seront attribués à l’aide des paramètres par défaut selon le type d’agent sélectionné dans une liste déroulante au niveau du scénario, et seront appliqués à toutes les étapes, sauf s’ils sont définis de manière personnalisée au niveau d’une étape. Il convient de noter que la définition d’un en-tête au niveau d’une étape supprime automatiquement tous les en-têtes précédemment définis, à l’exception d’un en-tête par défaut attribué par la sélection de « User-Agent » dans une liste déroulante au niveau du scénario. Cependant, même l’en-tête par défaut « User-Agent » peut être remplacé en le spécifiant au niveau d’une étape. Pour annuler l’en-tête au niveau du scénario, l’en-tête doit être nommé et attribué sans valeur au niveau d’une étape. Les en-têtes doivent être listés en utilisant la même syntaxe que celle utilisée dans le protocole HTTP, avec é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} sont prises en charge. |
| Activé | Le scénario est actif si cette case est cochée, sinon il est désactivé. |
Notez que lors de la modification 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 du scénario existant. |
![]() |
Supprimer les données d’historique et de tendances du scénario. Cela amènera le serveur à exécuter le scénario immédiatement après la suppression des données. |
Si le champ Proxy HTTP est laissé vide, une autre façon d’utiliser un proxy HTTP consiste à définir des variables d’environnement liées au proxy.
Pour les vérifications HTTP, définissez 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, définissez la variable d’environnement HTTPS_PROXY. Par
exemple, HTTPS_PROXY=http://proxy_ip:proxy_port. Plus de détails sont
disponibles en exécutant une commande shell : # man curl.
L’onglet Étapes vous permet de configurer les étapes du scénario web. Pour ajouter une étape de 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ésolues 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} 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} 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. La spécification des 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. |
| 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*} 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.
Configuration des tags
L'onglet Tags permet de définir des tags au niveau du scénario.

Les tags permettent de filtrer les scénarios Web et les éléments de surveillance Web.
Configuration de l'authentification
L'onglet Authentification vous permet de configurer les options d'authentification du scénario. Un point vert à côté du nom de l'onglet indique qu'un type d'authentification HTTP est activé.

Paramètres d'authentification :
| Parameter | Description |
|---|---|
| Authentification HTTP | Sélectionnez l'option d'authentification : Aucune - aucune authentification n'est utilisée ; Basic - l'authentification de base est utilisée ; NTLM - l'authentification NTLM (Windows NT LAN Manager) est utilisée ; Kerberos - l'authentification Kerberos est utilisée (voir aussi : Configuration de Kerberos avec Zabbix) ; Digest - l'authentification Digest est utilisée. |
| Utilisateur | Saisissez le nom d'utilisateur (jusqu'à 255 caractères). Ce champ est disponible si Authentification HTTP est défini sur Basic, NTLM, Kerberos ou Digest. Les macros utilisateur sont prises en charge. |
| Mot de passe | Saisissez le mot de passe de l'utilisateur (jusqu'à 255 caractères). Ce champ est disponible si Authentification HTTP est défini sur Basic, NTLM, Kerberos ou Digest. Les macros utilisateur sont prises en charge. |
| Vérifier le pair SSL | Cochez la case pour vérifier le certificat SSL du serveur web. Le certificat du serveur sera automatiquement pris à partir de l'emplacement global de l'autorité de certification (CA) du système. Vous pouvez remplacer l'emplacement des fichiers CA à l'aide du paramètre de configuration du serveur ou du proxy Zabbix SSLCALocation. Cela définit l'option cURL CURLOPT_SSL_VERIFYPEER. |
| Vérifier l'hôte SSL | Cochez la case pour vérifier que le champ Common Name ou le champ Subject Alternate Name du certificat du serveur web correspond. Cela définit l'option cURL CURLOPT_SSL_VERIFYHOST. |
| 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 chiffrée, indiquez 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 ou du proxy Zabbix SSLCertLocation. Les macros HOST.* et les macros utilisateur peuvent être utilisées dans ce champ.Cela définit l'option cURL CURLOPT_SSLCERT. |
| 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 ou du proxy Zabbix SSLKeyLocation. Les macros HOST.* et les macros utilisateur peuvent être utilisées dans ce champ.Cela définit l'option cURL CURLOPT_SSLKEY. |
| 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. Cela définit l'option cURL CURLOPT_KEYPASSWD. |
[1] Zabbix prend en charge uniquement les fichiers de certificat et de clé privée au format PEM. 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 à partir de celui-ci à 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 prend en compte les modifications des certificats sans redémarrage.
Si vous avez le certificat client et la clé privée dans un seul fichier, indiquez-le simplement dans le 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. Il est facile de combiner le certificat et la clé :
cat client.crt client.key > client.pem
Affichage
Pour afficher les scénarios Web configurés pour un hôte, accédez à Surveillance → Hôtes, localisez l'hôte dans la liste et cliquez sur le lien hypertexte Web dans la dernière colonne. Cliquez sur le nom du scénario pour obtenir des informations détaillées.

Un aperçu des scénarios Web peut également être affiché dans Surveillance → Tableau de bord par un widget de surveillance Web.
Les résultats récents de l'exécution du scénario Web sont disponibles dans la section Surveillance → Dernières données.
Surveillance étendue
Il est parfois nécessaire d’enregistrer le contenu HTML reçu d’une page.
Cela est particulièrement utile si une étape d’un scénario web échoue.
Le niveau de débogage 5 (trace) sert à cet usage.
Ce niveau peut être défini dans les fichiers de configuration server et proxy ou à l’aide d’une option de contrôle à l’exécution (-R log_level_increase="http poller,N", où N est le numéro du processus).
Les exemples suivants montrent comment démarrer la surveillance étendue, à condition que le niveau de débogage 4 soit déjà défini :
# Augmenter le niveau de journalisation de tous les processus http poller :
zabbix_server -R log_level_increase="http poller"
# Augmenter le niveau de journalisation du deuxième processus http poller :
zabbix_server -R log_level_increase="http poller,2"
Si la surveillance web étendue n’est pas nécessaire, elle peut être arrêtée à l’aide de l’option
-R log_level_decrease.

