Créer une surveillance synthétique

Ce document explique comment créer une surveillance synthétique pour tester la disponibilité, la cohérence et les performances de vos services, applications, pages Web et API. Vous fournissez des tests pour votre application. La surveillance synthétique exécute ce script et enregistre les résultats des tests et des données supplémentaires telles que la latence. Pour être averti en cas d'échec d'un test, vous pouvez configurer une règle d'alerte afin de surveiller les résultats.

À propos de la surveillance synthétique

La surveillance synthétique exécute régulièrement une fonction Cloud de 2e génération à usage unique déployée sur Cloud Run. Lorsque vous créez la surveillance synthétique, vous définissez la fonction Cloud, qui doit être écrite en Node.js, ainsi que la fréquence d'exécution. Par exemple, vous pouvez configurer votre fonction Cloud pour qu'elle interagisse avec une page Web à l'aide de Puppeteer. Vous pouvez également configurer votre fonction Cloud pour interagir avec une API à l'aide du module Axios. Vous pouvez également tester des ressources situées dans un réseau VPC.

Pour créer votre fonction Cloud, vous pouvez utiliser un éditeur intégré ou importer un fichier ZIP. Si vous choisissez d'utiliser l'éditeur intégré, vous pouvez commencer avec un squelette fourni. Une fois la surveillance synthétique créée, Cloud Monitoring utilise un système de planification qui planifie l'exécution périodique de votre fonction Cloud. Même si vous spécifiez la région dans laquelle votre fonction Cloud est exécutée, les commandes déclenchant l'exécution peuvent provenir de n'importe quelle région compatible avec les serveurs de tests de disponibilité. Pour en savoir plus, consultez la section Répertorier les adresses IP des serveurs de tests de disponibilité.

Vous pouvez créer une règle d'alerte afin d'être averti en cas d'échec des tests:

  • Lorsque vous créez une surveillance synthétique à l'aide de la console Google Cloud, le comportement par défaut consiste à créer une règle d'alerte. Vous fournissez les canaux de notification. La règle d'alerte par défaut est configurée pour vous avertir en cas d'échecs de test consécutifs ou plus.

  • Lorsque vous créez une surveillance synthétique à l'aide de l'API Cloud Monitoring, vous devez créer une règle d'alerte pour surveiller le type de métrique uptime_check/check_passed pour la ressource Cloud Run sur laquelle la fonction Cloud est exécutée.

Considérations relatives à la fréquence d'exécution

Vous configurez la fréquence d'exécution de votre fonction Cloud. Pour déterminer la fréquence des exécutions, tenez compte de l'objectif de niveau de service (SLO) de votre service. Pour détecter les éventuels cas de non-respect des SLO, vous devez exécuter les tests fréquemment. Cependant, le SLO de votre service n'est pas le seul élément à prendre en compte. Vous devez également prendre en compte la manière dont le taux d'exécutions se traduit en charge sur votre service et en coûts. Chaque exécution fournit une charge à votre service. Par conséquent, plus vous exécutez votre fonction Cloud fréquemment, plus vous appliquez de charge à votre service. À titre indicatif, l'intervalle d'exécution par défaut des tests de disponibilité est d'une minute.

La fréquence d'exécution détermine également la vitesse à laquelle vous pouvez être averti en cas d'échec du test. Monitoring ouvre un incident et envoie une notification après le deuxième échec consécutif d'un test. Par exemple, si votre fréquence d'exécution est de 5 minutes, il peut s'écouler 10 minutes avant que deux tests échouent. Vous recevrez une notification après l'échec du deuxième test.

Exemple de code de la fonction Cloud

Pour obtenir des modèles et des exemples, consultez Exemples pour la surveillance synthétique. Vous pouvez utiliser ces exemples comme point de départ pour votre fonction Cloud. Si vous êtes un développeur expérimenté, envisagez d'utiliser Gemini pour générer du code pour la surveillance synthétique et réduire ainsi le temps de développement. L'utilisation de Gemini pour générer du code est en version Preview publique.

Le modèle générique, que vous pouvez sélectionner lorsque vous créez une surveillance synthétique à l'aide de la console Google Cloud, est configuré pour collecter les données de trace et de journal pour les requêtes HTTP sortantes. La solution exploite le module auto-instrumentation-node d'OpenTelemetry et l'enregistreur winston. En raison de la dépendance aux produits Open Source, vous devez vous attendre à des modifications de la structure des données de trace et de journal. Par conséquent, les données de trace et de journal collectées ne doivent être utilisées qu'à des fins de débogage.

Vous pouvez mettre en œuvre votre propre approche pour collecter des données de trace et de journal pour les requêtes HTTP sortantes. Pour obtenir un exemple d'approche personnalisée, consultez la classe SyntheticAutoInstrumentation.

Configuration de la fonction Cloud

Lorsque vous configurez votre fonction Cloud, vous devez spécifier les paramètres d'exécution, de compilation, de connexion et de sécurité, ou accepter les paramètres par défaut:

  • La valeur par défaut de la mémoire allouée peut ne pas être suffisante. Nous vous recommandons de définir ce champ sur une valeur d'au moins 2 Gio.

  • La valeur par défaut des paramètres de transfert de données entrant de votre fonction Cloud est d'autoriser tout le trafic. Vous pouvez utiliser ce paramètre ou un paramètre plus restrictif.

    Lorsque vous autorisez tout le trafic, la première phase de validation effectuée par Cloud Functions, qui se déroule au niveau du réseau, réussit toujours. La deuxième phase de validation détermine si l'appelant a été autorisé à exécuter la fonction Cloud. L'autorisation dépend du rôle IAM (Identity and Access Management) de l'appelant. Par défaut, Cloud Monitoring est autorisé à exécuter votre fonction Cloud. Pour savoir comment afficher ou modifier les paramètres de transfert de données entrants, consultez la section Paramètres d'entrée.

Restrictions des fonctions Cloud

  • Le nom de votre fonction Cloud ne doit pas contenir de trait de soulignement.

  • Vous ne pouvez collecter des données de trace et de journal pour les requêtes HTTP sortantes que lorsque vous utilisez le modèle générique.

  • Seules les fonctions HTTP sont acceptées. Si vous utilisez la console Google Cloud pour créer votre surveillance synthétique, une fonction par défaut qui interroge une URL vous est fournie. La source de la fonction par défaut, qui peut être modifiée, est disponible dans le dépôt Git generic-synthetic-nodejs.

    Pour en savoir plus sur les fonctions HTTP, consultez la page Écrire des fonctions HTTP.

  • Si vous utilisez l'API, la commande de déploiement doit spécifier que la fonction Cloud est de deuxième génération. Si vous utilisez la console Google Cloud, le déploiement est géré pour vous. Pour en savoir plus, consultez la page Déployer une fonction Cloud.

  • L'environnement d'exécution est limité à Node.js. Pour en savoir plus, consultez la section Nœud. Les versions suivantes de Node.js sont compatibles: 12, 14, 16, 18 et 20.

Données collectées par la surveillance synthétique

Cette section décrit les données collectées pour la surveillance synthétique. Pour en savoir plus sur l'affichage des résultats d'exécution, consultez Explorer les résultats de la surveillance synthétique.

Historique des exécutions

Pour chaque surveillance synthétique, un historique des résultats d'exécution est collecté. Ces données incluent les éléments suivants:

  • Série temporelle qui enregistre la réussite ou l'échec des exécutions au fil du temps.

  • Série temporelle qui enregistre la durée d'exécution du code. La durée d'exécution de la fonction n'est pas enregistrée. Les données de latence sont écrites sous forme de série temporelle uptime_check/request_latency pour la ressource Cloud Run sur laquelle la fonction Cloud est exécutée. Un graphique de ces données est fourni sur la page Détails de l'écran synthétique.

  • Journaux contenant des informations sur les exécutions de la surveillance synthétique, telles que les détails des tests et des échecs. Les journaux disponibles dépendent de votre fonction Cloud. Par exemple, si vous utilisez le modèle Mocha, les journaux contiennent des informations sur la réussite ou l'échec du test, ainsi que sur sa durée. La trace de la pile, lorsqu'elle est incluse, répertorie la ligne de code ayant échoué, les types d'erreurs et les messages d'erreur.

  • Éventuellement, traces et journaux pour les requêtes HTTP sortantes. Pour en savoir plus sur la collecte de ces données, consultez la section Latence des requêtes.

Métriques et journaux Cloud Functions

Métriques et journaux de votre fonction Cloud Ces données, qui sont collectées par Cloud Functions, incluent des informations sur le nombre d'exécutions par seconde, la durée d'exécution et l'utilisation de la mémoire de votre fonction.

Latence de la requête

Les données de latence de la requête HTTP effectuée par la surveillance synthétique sont automatiquement collectées et stockées par Cloud Trace.

Pour collecter les données de trace, de journal et de latence des requêtes HTTP sortantes effectuées par votre surveillance synthétique, vous devez utiliser le modèle générique. Pour en savoir plus, consultez la section Exemples pour la surveillance synthétique.

Avant de commencer

  1. Pour obtenir les autorisations nécessaires pour afficher et modifier la surveillance synthétique à 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. Son nom est semblable à 12345-compute@developer.gserviceaccount.com.

    Dans la console Google Cloud, accédez à la page Comptes de service:

    Accéder à Comptes de service

    Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est IAM et administration.

    Si le compte de service Compute Engine par défaut n'existe pas, cliquez sur Créer un compte de service et renseignez 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 la console Google Cloud, accédez à la page IAM :

      Accéder à IAM

      Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est IAM et administration.

    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 s'est pas vu attribuer un rôle comprenant 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 par API.

Créer une surveillance synthétique

Console

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

  1. Vérifiez que vous avez activé les API requises, que votre projet contient un compte de service Compute Engine par défaut et que ce compte dispose du rôle Éditeur (roles/editor). Pour en savoir plus, consultez la section Avant de commencer.
  2. Dans la console Google Cloud, accédez à la page  Surveillance synthétique:

    Accéder à Surveillance synthétique

    Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est Surveillance.

  3. Sélectionnez Create Synthetic Monitor (Créer une surveillance synthétique).
  4. Sélectionnez le modèle de votre fonction Cloud:

    • Surveillance synthétique personnalisée: utilisez ce modèle lorsque vous souhaitez collecter des données de journaux ou de trace pour les requêtes HTTP sortantes.

    • Surveillance synthétique Mocha: utilisez ce modèle pour écrire des suites de tests Mocha.

    • Vérificateur de liens non fonctionnel: utilisez ce modèle pour tester un URI et un nombre configurable de liens trouvés à cet URI. Pour en savoir plus sur les champs de ce vérificateur, consultez la section Créer un vérificateur de liens non fonctionnels.

  5. Attribuez un nom à la surveillance.

  6. Facultatif: mettez à jour le délai avant expiration de la réponse et la fréquence de contrôle, puis ajoutez des étiquettes définies par l'utilisateur.

  7. Effectuez l'une des opérations suivantes :

  8. Dans la boîte de dialogue "Fonction Cloud", procédez comme suit:

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

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

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

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

    3. Modifiez le code généré, ou écrivez ou importez du code pour votre fonction Cloud:

      • Pour modifier le code généré, saisissez votre propre code ou chargez l'exemple de fonction par défaut, sélectionnez Éditeur intégré. L'exemple de fonction, qui dépend du modèle que vous avez sélectionné précédemment, envoie une requête à une URL spécifique. Vous pouvez modifier la fonction par défaut.

      • Pour charger un fichier ZIP depuis votre système local, sélectionnez Fichier ZIP.

        Si vous importez un fichier ZIP à partir de votre système local, vous devez également spécifier un bucket Cloud Storage pour ce fichier. Si vous n'avez pas de bucket Cloud Storage approprié, créez-en un.

      • Pour charger un fichier ZIP depuis Cloud Storage, sélectionnez Fichier ZIP depuis Cloud Storage, sélectionnez le bucket de stockage, puis choisissez le fichier ZIP à charger.

        Vous pouvez également créer une fonction Cloud à l'aide des pages Cloud Functions de la console Google Cloud. Pour créer une surveillance synthétique qui surveille une copie de cette fonction Cloud, accédez à l'onglet Source, puis cliquez sur Download zip (Télécharger le fichier ZIP). Vous pouvez ensuite importer le fichier ZIP.

    4. Cliquez sur Apply function (Appliquer la fonction).

  9. Configurez la règle d'alerte:

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

    2. Ajoutez les canaux de notification.

  10. 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.

gcloud

Lorsque vous créez une surveillance synthétique à l'aide de Google Cloud CLI ou de l'API Cloud Monitoring, vous transmettez le nom de la fonction à l'appel d'API. Par conséquent, vous ne pouvez créer qu'une surveillance synthétique qui surveille une fonction Cloud existante.

  1. Vérifiez que vous avez activé les API requises, que votre projet contient un compte de service Compute Engine par défaut et que ce compte dispose du rôle Éditeur (roles/editor). Pour en savoir plus, consultez la section Avant de commencer.
  2. Rédiger et déployer votre fonction Cloud de 2e génération

    Par exemple, pour déployer l'exemple synthetics-sdk-nodejs dans le dépôt Google Cloud/synthetics-sdk-nodejs, procédez comme suit:

    1. Clonez le dépôt et accédez à l'emplacement du code source:

      git clone https://github.com/GoogleCloudPlatform/synthetics-sdk-nodejs.git
      cd synthetics-sdk-nodejs/samples/generic-synthetic-nodejs
      
    2. Déployez la fonction Cloud à l'aide de la commande gcloud functions deploy:

      gcloud functions deploy FUNCTION_NAME \
      --gen2 --region="us-west2" --source="." \
      --entry-point=SyntheticFunction --trigger-http --runtime=nodejs18
      

      Dans la commande gcloud functions deploy, procédez comme suit:

      • Assurez-vous que la valeur du champ FUNCTION_NAME est unique dans sa région de déploiement.

      • Incluez l'option --gen2 et définissez la région du déploiement.

      • Définissez le champ --entry-point comme suit:

        • Mocha: SyntheticMochaSuite
        • N'est pas moka: SyntheticFunction.
      • Définissez le champ --runtime sur nodejs18.

      • Incluez l'option --trigger-http.

      • Définissez le champ --ingress-settings lorsque vous ne souhaitez pas utiliser le paramètre par défaut, qui autorise tout le trafic.

      Cloud Functions crée, puis déploie votre fonction Cloud. Les résultats de la commande Google Cloud CLI incluent des informations sur la fonction, y compris son nom complet:

      name: projects/PROJECT_ID/locations/REGION/functions/FUNCTION_NAME
      

      Pour en savoir plus sur le déploiement d'une fonction, consultez la page Déployer une fonction Cloud.

    Pour répertorier les fonctions Cloud Functions dans votre projet Google Cloud, utilisez la commande gcloud functions list:

    gcloud functions list
    

    La réponse à cet appel est une liste d'entrées, dont chacune répertorie une fonction Cloud:

    NAME: function-1
    STATE: ACTIVE
    TRIGGER: HTTP Trigger
    REGION: us-west2
    ENVIRONMENT: 2nd gen
    

    Pour trouver le nom complet d'une fonction Cloud spécifique, exécutez la commande gcloud monitoring uptime describe.

  3. Pour créer la surveillance synthétique, exécutez la commande gcloud monitoring uptime create:

    gcloud monitoring uptime create DISPLAY_NAME --synthetic-target=TARGET
    

    Avant d'exécuter la commande précédente, procédez comme suit:

    • Remplacez DISPLAY_NAME par le nom de votre surveillance synthétique.
    • Remplacez TARGET par le nom complet de votre fonction Cloud.
  4. Créez une règle d'alerte.

    En raison de la complexité de la configuration des règles d'alerte, nous vous recommandons d'accéder à la page Moniteurs synthétiques de la console Google Cloud et d'utiliser les options permettant de créer une règle d'alerte. Avec cette approche, la plupart des champs de la règle d'alerte sont renseignés automatiquement. Pour créer la règle d'alerte à l'aide de la console Google Cloud, cliquez sur Créer une règle sur la page Moniteurs synthétiques.

    Si vous prévoyez d'utiliser la Google Cloud CLI ou l'API Cloud Monitoring, configurez le filtre de la condition comme suit:

    "filter": "resource.type = \"cloud_run_revision\" AND
                metric.type = \"monitoring.googleapis.com/uptime_check/check_passed\" AND
                metric.labels.check_id = \"CHECK_ID\"",
    

    La condition surveille les séries temporelles uptime_check/check_passed écrites par votre surveillance synthétique. Veillez à remplacer CHECK_ID par l'identifiant de la surveillance synthétique, qui est inclus dans les données de réponse d'une commande de création.

    Pour en savoir plus sur la création d'une règle d'alerte, consultez la section Créer des règles d'alerte à l'aide de l'API.

API

Lorsque vous créez une surveillance synthétique à l'aide de Google Cloud CLI ou de l'API Cloud Monitoring, vous transmettez le nom de la fonction à l'appel d'API. Par conséquent, vous ne pouvez créer qu'une surveillance synthétique qui surveille une fonction Cloud existante.

  1. Vérifiez que vous avez activé les API requises, que votre projet contient un compte de service Compute Engine par défaut et que ce compte dispose du rôle Éditeur (roles/editor). Pour en savoir plus, consultez la section Avant de commencer.
  2. Rédiger et déployer votre fonction Cloud de 2e génération

    Par exemple, pour déployer l'exemple synthetics-sdk-nodejs dans le dépôt Google Cloud/synthetics-sdk-nodejs, procédez comme suit:

    1. Clonez le dépôt et accédez à l'emplacement du code source:

      git clone https://github.com/GoogleCloudPlatform/synthetics-sdk-nodejs.git
      cd synthetics-sdk-nodejs/samples/generic-synthetic-nodejs
      
    2. Déployez la fonction Cloud à l'aide de la commande gcloud functions deploy:

      gcloud functions deploy FUNCTION_NAME \
      --gen2 --region="us-west2" --source="." \
      --entry-point=SyntheticFunction --trigger-http --runtime=nodejs18
      

      Dans la commande gcloud functions deploy, procédez comme suit:

      • Assurez-vous que la valeur du champ FUNCTION_NAME est unique dans sa région de déploiement.

      • Incluez l'option --gen2 et définissez la région du déploiement.

      • Définissez le champ --entry-point comme suit:

        • Mocha: SyntheticMochaSuite
        • N'est pas moka: SyntheticFunction.
      • Définissez le champ --runtime sur nodejs18.

      • Incluez l'option --trigger-http.

      • Définissez le champ --ingress-settings lorsque vous ne souhaitez pas utiliser le paramètre par défaut, qui autorise tout le trafic.

      Cloud Functions crée, puis déploie votre fonction Cloud. Les résultats de la commande Google Cloud CLI incluent des informations sur la fonction, y compris son nom complet:

      name: projects/PROJECT_ID/locations/REGION/functions/FUNCTION_NAME
      

      Pour en savoir plus sur le déploiement d'une fonction, consultez la page Déployer une fonction Cloud.

    Pour répertorier les fonctions Cloud Functions dans votre projet Google Cloud, utilisez la commande gcloud functions list:

    gcloud functions list
    

    La réponse à cet appel est une liste d'entrées, dont chacune répertorie une fonction Cloud:

    NAME: function-1
    STATE: ACTIVE
    TRIGGER: HTTP Trigger
    REGION: us-west2
    ENVIRONMENT: 2nd gen
    

    Pour trouver le nom complet d'une fonction Cloud spécifique, exécutez la commande gcloud monitoring uptime describe.

  3. Pour créer une surveillance synthétique, procédez comme suit:

    1. Cliquez sur projects.uptimeCheckConfigs.create pour ouvrir la page de référence de l'API correspondant à la méthode.
    2. Cliquez sur Essayer pour ouvrir APIs Explorer.
    3. Définissez les champs suivants, puis exécutez la commande.

      • Champ parent: projects/PROJECT_ID.
      • Dans le corps de la requête, spécifiez les éléments suivants :

        • displayName: défini sur le nom à afficher pour votre surveillance synthétique.
        • syntheticMonitor: défini sur le nom complet de votre fonction Cloud.

      En cas de réussite, la réponse à l'appel d'API est semblable à celle-ci:

      {
      "name": "projects/myproject/uptimeCheckConfigs/17272586127463315332",
      "displayName": "MyMonitor",
      ...
      "syntheticMonitor": {
       "cloudFunctionV2": {
          "name": "projects/myproject/locations/us-west2/functions/function-1",
          "cloudRunRevision": {
          "type": "cloud_run_revision",
          "labels": {
             "project_id": "myproject",
             "configuration_name": "",
             "location": "us-west2",
             "revision_name": "",
             "service_name": "function-1"
          }
          }
       }
      }
      }
      
  4. Créez une règle d'alerte.

    En raison de la complexité de la configuration des règles d'alerte, nous vous recommandons d'accéder à la page Moniteurs synthétiques de la console Google Cloud et d'utiliser les options permettant de créer une règle d'alerte. Avec cette approche, la plupart des champs de la règle d'alerte sont renseignés automatiquement. Pour créer la règle d'alerte à l'aide de la console Google Cloud, cliquez sur Créer une règle sur la page Moniteurs synthétiques.

    Si vous prévoyez d'utiliser la Google Cloud CLI ou l'API Cloud Monitoring, configurez le filtre de la condition comme suit:

    "filter": "resource.type = \"cloud_run_revision\" AND
                metric.type = \"monitoring.googleapis.com/uptime_check/check_passed\" AND
                metric.labels.check_id = \"CHECK_ID\"",
    

    La condition surveille les séries temporelles uptime_check/check_passed écrites par votre surveillance synthétique. Veillez à remplacer CHECK_ID par l'identifiant de la surveillance synthétique, qui est inclus dans les données de réponse d'une commande de création.

    Pour en savoir plus sur la création d'une règle d'alerte, consultez la section Créer des règles d'alerte à l'aide de l'API.

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.

Pour créer une surveillance synthétique et une règle d'alerte permettant de surveiller cette vérification, procédez comme suit:

  1. Vérifiez que vous avez activé les API requises, que votre projet contient un compte de service Compute Engine par défaut et que ce compte dispose du rôle Éditeur (roles/editor). Pour en savoir plus, consultez la section Avant de commencer.

  2. Modifiez votre fichier de configuration Terraform et ajoutez une ressource google_storage_bucket, puis appliquez vos modifications.

    Le code suivant définit un bucket Cloud Storage à l'emplacement US:

    resource "google_storage_bucket" "gcf_source" {
       name = "gcf-v2-source-9948673986912-us"
       location = "US"
       uniform_bucket_level_access = true
    }
    
  3. Modifiez votre fichier de configuration Terraform et ajoutez une ressource google_storage_bucket_object, puis appliquez vos modifications.

    La ressource spécifie le nom de l'objet dans votre bucket et l'emplacement du fichier ZIP sur votre système local. Par exemple, lorsque vous appliquez le code suivant, un fichier nommé example-function.zip est ajouté à votre bucket de stockage:

    resource "google_storage_bucket_object" "object" {
       name = "example-function.zip"
       bucket = google_storage_bucket.gcf_source.name
       source = "generic-synthetic-node.js.zip"
    }
    
  4. Modifiez votre fichier de configuration Terraform et ajoutez une ressource google_cloudfunctions2_function, puis appliquez vos modifications.

    Assurez-vous que votre ressource google_cloudfunctions2_function spécifie un environnement d'exécution Node.js et le point d'entrée utilisé par la surveillance synthétique. Par exemple, lorsque vous appliquez le code suivant, une fonction nommée sm-central1 est déployée:

    resource "google_cloudfunctions2_function" "central1" {
       name = "sm-central1"
       location = "us-central1"
    
       build_config {
          runtime = "nodejs20"
          entry_point = "SyntheticFunction"
          source {
                storage_source {
                   bucket = google_storage_bucket.gcf_source.name
                   object = google_storage_bucket_object.object.name
                }
          }
       }
    
       service_config {
          max_instance_count = 1
          available_memory = "256Mi"
          timeout_seconds  = 60
       }
    }
    
  5. Pour créer une surveillance synthétique, modifiez votre fichier de configuration Terraform, ajoutez une ressource google_monitoring_uptime_check_config, puis appliquez vos modifications.

    Pour cette ressource, spécifiez le bloc synthetic_monitor:

    resource "google_monitoring_uptime_check_config" "synthetic" {
       display_name = "sm-central1"
       timeout = "30s"
    
       synthetic_monitor {
          cloud_function_v2 {
                name = google_cloudfunctions2_function.central1.id
          }
       }
    }
    
  6. Facultatif: Créez un canal de notification et une règle d'alerte.

    Les étapes suivantes utilisent la console Google Cloud pour créer le canal de notification et la règle d'alerte. Cette approche garantit que la règle d'alerte ne surveille que les données générées par votre surveillance synthétique.

    1. Pour créer un canal de notification, procédez comme suit:

      1. Dans la console Google Cloud, accédez à la page  Alertes:

        Accéder à l'interface des alertes

        Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est Surveillance.

      2. Sélectionnez Gérer les canaux de notification.
      3. Accédez au type de chaîne que vous souhaitez ajouter, cliquez sur Ajouter, puis renseignez les champs de la boîte de dialogue.
    2. Pour créer une règle d'alerte, procédez comme suit :

      1. Dans la console Google Cloud, accédez à la page  Surveillance synthétique:

        Accéder à Surveillance synthétique

        Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est Surveillance.

      2. Recherchez votre surveillance synthétique, sélectionnez Plus, puis Ajouter une règle d'alerte.
      3. Dans la boîte de dialogue, accédez à la section Notifications et nom, développez Canaux de notification, puis effectuez vos sélections.
      4. Nommez la règle d'alerte, puis cliquez sur Créer une règle.

Tarification

En général, les métriques système de Cloud Monitoring sont gratuites, contrairement aux métriques des systèmes, agents ou applications externes. Les métriques facturables sont facturées en fonction du nombre d'octets ou du nombre d'échantillons ingérés.

Pour en savoir plus sur les tarifs de Cloud Monitoring, consultez les documents suivants:

Résoudre les problèmes liés à la surveillance synthétique

Cette section fournit des informations qui peuvent vous aider à résoudre les problèmes liés à la surveillance synthétique.

Message d'erreur après l'activation des API

Vous ouvrez le flux de création pour la surveillance synthétique et êtes invité à activer au moins une API. Une fois les API activées, un message semblable au suivant s'affiche:

An error occurred during fetching available regions: Cloud Functions API has
not been used in project PROJECT_ID before or it is disabled.

Le message d'erreur vous recommande de vérifier que l'API est activée, puis vous recommande d'attendre et de relancer l'action.

Pour vérifier que l'API est activée, accédez à la page API et services de votre projet:

Accéder aux API et services

Après avoir vérifié que l'API est activée, vous pouvez poursuivre le processus de création. La condition est résolue automatiquement une fois l'activation de l'API propagée dans le backend.

Les requêtes HTTP sortantes ne sont pas suivies.

Vous configurez la surveillance synthétique afin de collecter les données de trace pour les requêtes HTTP de sortie. Vos données de trace n'affichent qu'un seul segment, comme dans la capture d'écran suivante:

Cloud Trace n'affiche qu'une seule trace.

Pour résoudre ce problème, assurez-vous que votre compte de service dispose du rôle Agent Cloud Trace (roles/cloudtrace.agent). Le rôle Éditeur (roles/editor) est également suffisant.

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

  1. Dans la console Google Cloud, accédez à la page IAM :

    Accéder à IAM

    Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est IAM et administration.

  2. Sélectionnez Inclure les attributions de rôles fournies par Google.
  3. Si le compte de service utilisé par votre surveillance synthétique ne figure pas dans la liste ou s'il ne lui a pas été attribué un rôle incluant les autorisations du rôle d'agent Cloud Trace (roles/cloudtrace.agent), accordez ce rôle à votre compte de service.

    Si vous ne connaissez pas le nom de votre compte de service, sélectionnez Comptes de service dans le menu de navigation.

État "En cours"

La page Surveillance synthétique présente la surveillance synthétique avec l'état In progress. L'état In progress signifie que la surveillance synthétique a été créée récemment et qu'il n'y a aucune donnée à afficher, ou que le déploiement de la fonction a échoué.

Pour déterminer si le déploiement de la fonction a échoué, essayez ce qui suit:

  • Assurez-vous que le nom de votre fonction Cloud ne contient pas de trait de soulignement. Si un trait de soulignement est présent, supprimez-le et redéployez la fonction Cloud.

  • Ouvrez la page Détails de la surveillance synthétique correspondant à la surveillance synthétique.

    Si le message suivant s'affiche, supprimez la surveillance synthétique.

    Cloud Function not found for this Synthetic monitor. Please confirm it exists or delete this monitor.
    

    Le message d'erreur indique que la fonction a été supprimée et que la surveillance synthétique ne peut donc pas exécuter la fonction.

  • Ouvrez la page Cloud Functions pour la fonction. Pour ouvrir cette page à partir de la page Détails de la surveillance synthétique, cliquez sur Code, puis sur le nom de la fonction.

    Si un message semblable à celui-ci s'affiche, le déploiement de la fonction a échoué.

    This function has failed to deploy and will not work correctly. Please edit and redeploy
    

    Pour résoudre ce problème, examinez le code de la fonction et corrigez les erreurs qui empêchent sa création ou son déploiement.

Lorsque vous créez une surveillance synthétique, le déploiement et l'exécution de la fonction peut prendre plusieurs minutes.

État de l'avertissement

La page Surveillance synthétique indique une surveillance synthétique avec l'état Warning. L'état Warning signifie que les résultats d'exécution sont incohérents. Cela peut indiquer un problème de conception avec votre test ou un comportement incohérent des éléments testés.

État "Échec"

La page Surveillance synthétique indique une surveillance synthétique avec l'état Failing. Pour en savoir plus sur le motif de l'échec, affichez l'historique des exécutions le plus récent.

  • Si le message d'erreur Request failed with status code 429 s'affiche, la cible de la requête HTTP a rejeté la commande. Pour résoudre ce problème, vous devez modifier la cible de la surveillance synthétique.

    Le point de terminaison https://www.google.com rejette les requêtes effectuées par des moniteurs synthétiques.

  • Si l'échec renvoie une durée d'exécution 0ms, la fonction Cloud est peut-être à court de mémoire. Pour résoudre ce problème, modifiez votre fonction Cloud, puis augmentez la mémoire à au moins 2 Gio et définissez le champ de processeur sur 1.

Échec de la suppression pour une surveillance synthétique

Vous utilisez l'API Cloud Monitoring pour supprimer une surveillance synthétique, mais l'appel d'API échoue avec une réponse semblable à la suivante:

{
  "error": {
    "code": 400,
    "message": "Request contains an invalid argument.",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.DebugInfo",
        "detail": "[ORIGINAL ERROR] generic::invalid_argument: Cannot delete check 1228258045726183344. One or more alerting policies is using it.Delete the alerting policy with id projects/myproject/alertPolicies/16594654141392976482 and any other policies using this uptime check and try again."
      }
    ]
  }
}

Pour résoudre le problème, supprimez les règles d'alerte qui surveillent les résultats de la surveillance synthétique, puis supprimez la surveillance synthétique.

Étapes suivantes