Créer un vérificateur de liens non fonctionnels

Ce document explique comment configurer un test périodique des liens contenus dans un URI en créant une surveillance synthétique. Spécifiez les options du test, telles que l'URI d'origine, le nombre de liens testés et le nombre de tentatives, puis déployez une fonction Cloud préconfigurée. Pour vous aider à résoudre les problèmes et à déboguer, les surveillances synthétiques enregistrent des informations détaillées sur chaque test, y compris des captures d'écran. Les captures d'écran vous permettent de voir la réponse exacte vue par les clients de votre application.

Pour en savoir plus sur les surveillances synthétiques, consultez la section À propos des surveillances synthétiques.

À propos des vérificateurs de liens non fonctionnels

Chaque vérificateur de liens non fonctionnels teste les liens en série, et il existe un délai d'expiration synthétique global, configurable.

Par défaut, un vérificateur de liens non fonctionnels effectue les opérations suivantes:

  • Recherche les éléments d'ancrage HTML avec des attributs href dans l'URI d'origine.
  • Teste les 10 premiers liens trouvés dans l'URI d'origine.
  • L'outil de vérification émet une demande pour chaque lien, puis attend une réponse au plus tard 30 secondes. Lorsqu'une réponse est reçue, le vérificateur vérifie que l'état de la réponse HTTP est 200, ce qui indique que la réponse a réussi. Le vérificateur n'effectue pas de nouvelles tentatives.

Vous spécifiez l'URI d'origine. Vous pouvez configurer les éléments HTML recherchés par le vérificateur de liens non fonctionnels, le nombre maximal d'éléments testés, le délai avant expiration par test et si de nouvelles tentatives doivent être effectuées. Vous pouvez également configurer des vérificateurs de liens non fonctionnels pour attendre qu'un sélecteur s'affiche.

Les vérificateurs de liens non fonctionnels utilisent le modèle broken-links-ok. La configuration d'un vérificateur de liens non fonctionnels est spécifiée par l'objet options du fichier index.js. Si vous créez le vérificateur à l'aide de la console Google Cloud, vous êtes invité à spécifier chaque option de configuration, et la fonction Cloud est mise à jour automatiquement. Toutefois, si vous utilisez l'API Cloud Monitoring ou Terraform, vous devez renseigner cet objet.

Après avoir créé un vérificateur de liens non fonctionnels, mettez à jour l'objet options et redéployez la fonction Cloud pour modifier la configuration.

Avant de commencer

  1. Pour obtenir les autorisations dont vous avez besoin pour afficher et modifier les surveillances synthétiques à l'aide de la console Google Cloud, demandez à votre administrateur de vous attribuer les rôles IAM suivants sur votre projet:

    Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.

    Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

  2. Activer les API Cloud Monitoring API, Artifact Registry API, Cloud Build API, Cloud Functions API, Cloud Logging API, Pub/Sub API, and Cloud Run Admin API.

    Activer les API

  3. Vérifiez que votre projet Google Cloud contient le compte de service Compute Engine par défaut. Ce compte de service est créé lorsque vous activez l'API Compute Engine et porte un nom semblable à 12345-compute@developer.gserviceaccount.com.

    Dans le panneau de navigation de la console Google Cloud, sélectionnez IAM et administration, puis Comptes de service:

    Accéder à Comptes de service

    Si le compte de service Compute Engine par défaut n'existe pas, cliquez sur Créer un compte de service et remplissez les champs de la boîte de dialogue.

  4. Assurez-vous que le compte de service Compute Engine par défaut, ou le compte de service que vous avez créé, dispose du rôle Éditeur (roles/editor).

    Pour afficher les rôles attribués à votre compte de service, procédez comme suit:

    1. Dans le panneau de navigation de la console Google Cloud, sélectionnez IAM :

      Accéder à IAM

    2. Sélectionnez Inclure les attributions de rôles fournies par Google.
    3. Si le compte de service utilisé par votre surveillance synthétique n'est pas répertorié ou s'il ne dispose pas d'un rôle incluant les autorisations du rôle Agent Cloud Trace (roles/cloudtrace.agent), accordez ce rôle à votre compte de service.
  5. Configurez les canaux de notification que vous souhaitez utiliser pour recevoir des notifications. Nous vous recommandons de créer plusieurs types de canaux de notification. Pour en savoir plus, consultez Créer et gérer des canaux de notification et Créer et gérer des canaux de notification à l'aide d'API.

Créer un vérificateur de liens non fonctionnels

Console

Lorsque vous créez une surveillance synthétique à l'aide de la console Google Cloud, une nouvelle fonction Cloud (2e génération) est déployée et la surveillance correspondante est créée. Vous ne pouvez pas créer de surveillance synthétique qui surveille une fonction Cloud existante.

  1. Assurez-vous d'avoir activé les API requises, que votre projet contient un compte de service Compute Engine par défaut et que ce compte a reçu le rôle d'éditeur (roles/editor). Pour en savoir plus, consultez la section Avant de commencer.
  2. Dans le panneau de navigation de la console Google Cloud, sélectionnez Monitoring, puis  Surveillance synthétique:

    Accéder à la page Surveillance synthétique

  3. Sélectionnez Créer une surveillance synthétique.
  4. Pour le modèle, sélectionnez Vérificateur de liens non fonctionnels.
  5. Saisissez un nom pour la surveillance synthétique.
  6. Facultatif: mettez à jour le délai d'expiration de la réponse et la fréquence de vérification, et ajoutez des libellés définis par l'utilisateur.

  7. Configurez l'URI et les éléments à tester:

    1. Cliquez sur Origin URI (URI d'origine), puis saisissez l'URI que vous souhaitez tester. La valeur que vous saisissez doit être un point de terminaison HTTP ou HTTPS. Par exemple, vous pouvez saisir https://mywebsite.example.com.

    2. Facultatif: Dans le champ Nombre de liens à suivre, mettez à jour le nombre maximal de liens à tester. La valeur par défaut de ce champ est 10.

    3. Facultatif: dans le champ Sélecteur d'éléments HTML, saisissez l'élément HTML que vous souhaitez mettre en correspondance, sous la forme d'une liste d'éléments séparés par une virgule. La valeur que vous saisissez est convertie en chaîne, puis transmise à la méthode Document: querySelectorAll().

      Par défaut, ce champ est défini sur a, ce qui correspond aux ancres. Vous pouvez saisir des valeurs telles que a, img lorsque vous souhaitez faire correspondre à la fois les ancres et les images.

    4. Facultatif: dans le champ Attributs HTML à suivre, saisissez les attributs HTML que vous souhaitez mettre en correspondance. Les valeurs séparées par une virgule que vous saisissez sont transmises individuellement à la méthode getAttribute().

      Par défaut, ce champ est défini sur href, qui spécifie l'URI du lien. Vous pouvez saisir plusieurs attributs. Par exemple, vous pouvez saisir href, src. Dans cet exemple, le code recherche l'attribut href, puis l'attribut src.

    5. (Facultatif) Configurez l'attente du sélecteur, le délai avant expiration par URI, les nouvelles tentatives et les codes d'état attendus :

      1. Cliquez sur Afficher plus d'options.
      2. Pour configurer le vérificateur de liens non fonctionnels afin qu'il attende qu'un sélecteur spécifique apparaisse dans l'URI avant que des liens ne soient récupérés, saisissez les sélecteurs CSS dans le champ Attendre le sélecteur d'éléments. La valeur que vous saisissez est convertie en chaîne, puis transmise à la méthode page.waitForSelector().

        Si le sélecteur n'apparaît pas avant l'expiration du délai, l'échec est enregistré dans les journaux.

      3. Mettez à jour l'ordre dans lequel les liens sont sélectionnés pour les tests.

      4. Configurez les nouvelles tentatives.

        Par défaut, une requête est envoyée à chaque lien. Si la requête initiale échoue pour une raison quelconque (par exemple, si la commande expire ou si le code d'état HTTP n'est pas 200), le lien est marqué comme ayant échoué.

        Ce champ indique le nombre de fois où l'outil de vérification des liens non fonctionnels peut émettre une requête HTTP vers un lien avant de le marquer comme ayant échoué.

      5. Configurez un délai avant expiration qui s'applique à chaque URI. Par défaut, cette valeur est définie sur 30 secondes.

      6. Pour spécifier le code d'état attendu et le délai avant expiration pour un URI spécifique, cliquez sur Ajouter une option par lien, puis complétez la boîte de dialogue.

  8. Facultatif: indiquez si des captures d'écran des réponses sont collectées et enregistrées. Si vous utilisez les paramètres par défaut, les captures d'écran ne sont pas enregistrées. Si vous activez la collecte de captures d'écran, vous pouvez collecter des captures d'écran pour tous les tests ou uniquement pour ceux qui ont échoué. Cloud Monitoring utilise la convention suivante pour nommer le bucket Cloud Storage:

    gcm-PROJECT_ID-synthetics-LOCATION
    

    Dans l'expression précédente:

    • PROJECT_ID : ID de votre projet Google Cloud.
    • LOCATION: emplacement de votre bucket Cloud Storage.

    Vous avez la possibilité d'utiliser un bucket Cloud Storage existant.

  9. Vérifiez votre configuration pour vous assurer qu'elle est correcte et complète, puis créez votre fonction Cloud:

    1. Cliquez sur Créer une fonction.

      Les valeurs des champs de configuration de l'URI sont copiées dans l'objet Options du fichier index.js lorsque vous cliquez sur Créer une fonction. Après avoir cliqué sur Créer une fonction, modifiez l'objet Options pour changer la configuration.

    2. Saisissez un nom à afficher, puis sélectionnez une région. Les noms doivent être uniques au sein d'une région.

    3. Dans la section Paramètres d'exécution, de compilation, de connexion et de sécurité, procédez comme suit:

      • Dans l'onglet Connexions, assurez-vous que l'option Autoriser tout le trafic est sélectionnée.

      • Vérifiez les paramètres par défaut et modifiez-les si nécessaire.

      • Dans le champ Compte de service d'exécution, sélectionnez un compte de service.

    4. Cliquez sur Appliquer la fonction.

  10. Configurez la règle d'alerte:

    1. (Facultatif) Mettez à jour le nom de la règle d'alerte et la durée d'échec avant l'envoi des notifications.

    2. Ajoutez les canaux de notification.

  11. Cliquez sur Créer.

    La fonction Cloud que vous avez définie est créée et déployée en tant que 2nd gen, et la surveillance synthétique est créée.

API

Le processus de création d'un vérificateur de liens non fonctionnels à l'aide de l'API Cloud Monitoring est identique à celui de la création de tout autre moniteur synthétique. Pour en savoir plus sur l'utilisation de l'API Cloud Monitoring pour créer une surveillance synthétique, consultez la page Créer une surveillance synthétique et sélectionnez l'onglet Cloud Monitoring.

Les vérificateurs de liens non fonctionnels utilisent le modèle broken-links-ok. La configuration d'un vérificateur de liens non fonctionnels est spécifiée par l'objet options du fichier index.js.

Une fois la structure options.screenshot_options définie, le vérificateur de liens rompus collecte les captures d'écran et les enregistre dans un bucket Cloud Storage. Si le champ screenshot_options.storage_location n'est pas défini ou si la valeur est une chaîne vide, Monitoring crée un bucket Cloud Storage et les captures d'écran sont enregistrées dans ce bucket. Monitoring utilise la convention suivante pour nommer le bucket Cloud Storage:

gcm-PROJECT_ID-synthetics-LOCATION

Dans l'expression précédente:

  • PROJECT_ID : ID de votre projet Google Cloud.
  • LOCATION: emplacement de votre bucket Cloud Storage.

Terraform

Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base. Pour en savoir plus, consultez la documentation de référence du fournisseur Terraform.

Le processus de création d'un vérificateur de liens rompus à l'aide de Terraform est identique à celui de la création de tout autre moniteur synthétique. Pour en savoir plus sur l'utilisation de Terraform pour créer une surveillance synthétique, consultez la section Créer une surveillance synthétique et sélectionnez l'onglet Terraform.

Les vérificateurs de liens non fonctionnels utilisent le modèle broken-links-ok. La configuration d'un vérificateur de liens non fonctionnels est spécifiée par l'objet options du fichier index.js.

Une fois la structure options.screenshot_options définie, le vérificateur de liens rompus collecte les captures d'écran et les enregistre dans un bucket Cloud Storage. Si le champ screenshot_options.storage_location n'est pas défini ou si la valeur est une chaîne vide, Monitoring crée un bucket Cloud Storage et les captures d'écran sont enregistrées dans ce bucket. Monitoring utilise la convention suivante pour nommer le bucket Cloud Storage:

gcm-PROJECT_ID-synthetics-LOCATION

Dans l'expression précédente:

  • PROJECT_ID : ID de votre projet Google Cloud.
  • LOCATION: emplacement de votre bucket Cloud Storage.

Explorer les résultats

Pour chaque exécution, un vérificateur de liens non fonctionnels effectue les opérations suivantes:

  • Génère une table, dans laquelle chaque ligne fournit des informations sur le test d'un URI spécifique. Les informations récapitulatives incluent l'URI cible, la latence, l'état et l'identifiant de l'élément HTML. Par exemple, cette colonne indique a lorsqu'un élément d'ancrage HTML est testé. Lorsque la ligne correspond à l'URI d'origine, la valeur de l'identifiant de l'élément HTML est -.

  • collecte des métriques, des données de trace et des données de journaux ;

  • Collecte des captures d'écran, une fois la configuration effectuée.

Pour en savoir plus sur l'exploration des données collectées, consultez la section Explorer les résultats de la surveillance synthétique.

Résoudre les problèmes

Cette section fournit des informations qui peuvent vous aider à résoudre les problèmes liés aux vérificateurs de liens non fonctionnels.

Impossible de modifier la configuration d'un vérificateur de liens non fonctionnels

Vous avez créé un vérificateur de liens non fonctionnels à l'aide de la console Google Cloud et vous souhaitez modifier les éléments HTML testés, ou modifier le délai avant expiration de l'URI, les nouvelles tentatives, l'attente du sélecteur et les options par lien. Toutefois, lorsque vous modifiez l'outil de vérification des liens non fonctionnels, la console Google Cloud n'affiche pas les champs de configuration.

Pour résoudre ce problème, procédez comme suit:

  1. Dans le panneau de navigation de la console Google Cloud, sélectionnez Monitoring, puis  Surveillance synthétique:

    Accéder à la page Surveillance synthétique

  2. Recherchez la surveillance synthétique que vous souhaitez modifier, cliquez sur Plus d'options, puis sélectionnez Modifier.
  3. Cliquez sur Modifier la fonction.
  4. Modifiez l'objet options dans le fichier index.js, puis cliquez sur Apply function (Appliquer la fonction).

    Pour en savoir plus sur les champs et la syntaxe de cet objet, consultez broken-links-ok/index.js.

  5. Cliquez sur Enregistrer.

Affichage de la console Google Cloud avec un échec d'enregistrement des captures d'écran

Vous avez créé un vérificateur de liens non fonctionnels et l'avez configuré pour enregistrer des captures d'écran. Cependant, la console Google Cloud affiche l'un des messages d'avertissement suivants, ainsi que des informations plus détaillées:

  • InvalidStorageLocation
  • StorageValidationError
  • BucketCreationError
  • ScreenshotFileUploadError

Pour résoudre ces échecs, essayez ce qui suit:

  • Si le message InvalidStorageLocation s'affiche, vérifiez l'existence du bucket Cloud Storage spécifié dans le champ nommé options.screenshot_options.storage_location.

  • Affichez les journaux associés à votre fonction Cloud. Pour en savoir plus, consultez la section Rechercher des journaux.

  • Vérifiez que le compte de service utilisé dans la fonction Cloud correspondante dispose d'un rôle Identity and Access Management qui lui permet de créer des buckets Cloud Storage, d'y accéder et d'y écrire.

Étapes suivantes