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 de 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: 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)
  • 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.
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 apparaissent 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 HTTPS - 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.
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 {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.

#### 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 certain type d'authentification HTTP est activé.

Paramètres d'authentification :

Paramètre Description
Authentification Options d'authentification.
Aucun - aucune authentification utilisée.
Basique - 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.
La sélection d'une méthode d'authentification fournira deux champs supplémentaires pour entrer un utilisateur nom et mot de passe.
Des macros utilisateur peuvent être utilisées dans les champs utilisateur et mot de passe.
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 (CA) à l'échelle du système. Vous pouvez remplacer l'emplacement des fichiers CA à l'aide du serveur Zabbix ou du paramètre de configuration proxy 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 de 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 crypté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 Zabbix ou du proxy 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.
Des macros utilisateur peuvent être utilisées dans ce champ.
Cela définit l'option cURL CURLOPT_KEYPASSWD.

[1] Zabbix prend uniquement en charge les fichiers de certificat et de clé privée au format PEM. Si vous avez votre certificat et vos données de clé privée 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 récupère les modifications des certificats sans redémarrage.

Si vous avez un certificat client et une clé privée dans un seul fichier, spécifiez-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. Combiner certificat et clé est simple :

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

Parfois, il est nécessaire de consigner le contenu de la page HTML reçu. 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 serveur et proxy ou en utilisant une option de contrôle d'exécution (-R log_level_increase="http poller ,N", où N est le numéro de processus). Les exemples suivants montrent comment la surveillance é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 second poller http :
       shell> zabbix_server -R log_level_increase="http poller,2"

Si une surveillance Web étendue n'est pas requise, elle peut être arrêtée à l'aide de l'option -R log_level_decrease.