Créer une surveillance synthétique

Ce document explique comment créer des surveillances synthétiques 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 des surveillances synthétiques

Une 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 interagir 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 les ressources au sein d'un réseau VPC.

Pour créer une 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 que vous avez créé une surveillance synthétique, Cloud Monitoring utilise un système de planification qui planifie l'exécution périodique de votre fonction Cloud. Bien que vous spécifiiez la région dans laquelle existe votre fonction Cloud, les commandes qui déclenchent 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 la 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, examinez l'objectif de niveau de service (SLO) de votre service. Pour détecter d'éventuels cas de non-respect du SLO, vous devez exécuter fréquemment les tests. Cependant, le SLO de votre service n'est pas le seul élément à prendre en compte. Vous devez également tenir compte de la façon dont la fréquence d'exécution se traduit par la charge sur votre service et les coûts. Chaque exécution génère une charge sur votre service. Par conséquent, plus vous exécutez la fonction Cloud fréquemment, plus la charge appliquée à votre service est importante. Pour référence, l'intervalle d'exécution par défaut pour les tests de disponibilité est d'une minute.

La fréquence d'exécution détermine également la rapidité avec 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, l'échec de deux tests peut prendre 10 minutes. Vous recevrez une notification après le deuxième échec du test.

Exemple de code de la fonction Cloud

Pour obtenir des modèles et des exemples, consultez la section Exemples de 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 afin de générer du code pour les surveillances synthétiques et de réduire ainsi votre temps de développement. 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 dans 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 les 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.

Restrictions concernant les fonctions Cloud

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

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

  • Les paramètres de transfert de données entrant de votre fonction Cloud doivent être définis pour autoriser tout le trafic. Ce paramètre garantit que la première phase de validation effectuée par Cloud Functions, qui est effectuée au niveau du réseau, se déroule systématiquement. 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 plus d'informations sur l'affichage ou la modification des paramètres de transfert de données entrantes, consultez la section Paramètres d'entrée.

  • Seules les fonctions HTTP sont acceptées. Si vous utilisez la console Google Cloud pour créer la 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 section Écrire des fonctions HTTP.

  • Si vous utilisez l'API, la commande de déploiement doit spécifier que la fonction Cloud est de 2e génération. Si vous utilisez la console Google Cloud, le déploiement est géré automatiquement. 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 les surveillances synthétiques

Cette section décrit les données collectées pour votre surveillance synthétique. Pour en savoir plus sur l'affichage des résultats d'exécution, consultez la section 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. L'heure 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 disponible sur la page Informations sur la surveillance synthétique.

  • Journaux contenant des informations sur les exécutions de la surveillance synthétique, telles que des informations sur le test et les détails de l'échec. Les journaux disponibles dépendent de votre fonction Cloud. Par exemple, si vous utilisez le modèle Mocha, les journaux incluent 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'erreur et les messages d'erreur.

  • Éventuellement, traces et journaux des 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 de la fonction Cloud

Métriques et journaux pour 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 des requêtes HTTP effectuées par la surveillance synthétique sont automatiquement collectées et stockées par Cloud Trace.

Pour collecter les données de trace, de journalisation et de latence pour les 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 de surveillance synthétique.

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 une surveillance synthétique

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. 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 journal ou de trace pour des requêtes HTTP sortantes.

    • Surveillance synthétique Mocha: utilisez ce modèle lorsque vous écrivez des suites de tests Mocha.

    • Vérificateur de liens non fonctionnels: utilisez ce modèle pour tester un URI et un nombre configurable de liens détectés au niveau de 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. Saisissez un nom pour l'écran.

  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. Effectuez l'une des opérations suivantes :

  8. Dans la boîte de dialogue "Cloud Function" (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:

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

      1. Modifiez le code généré, ou écrivez ou importez le 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 Importation au format ZIP.

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

        • Pour charger un fichier ZIP depuis Cloud Storage, sélectionnez ZIP depuis Cloud Storage, puis le bucket de stockage. Sélectionnez ensuite 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 un moniteur synthétique qui surveille une copie de cette fonction Cloud, accédez à l'onglet Source et cliquez sur Download zip (Télécharger le fichier ZIP). Vous pouvez ensuite importer le fichier ZIP.

      2. Cliquez sur 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 d'é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 la 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. 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. Rédigez et déployez 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 de déploiement.

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

        • Mocha: SyntheticMochaSuite
        • Pas de mocha: SyntheticFunction.
      • Définissez le champ --runtime sur nodejs18.

      • Incluez l'indicateur --trigger-http.

      • Le champ --ingress-settings ne doit pas être spécifié ou doit être défini sur all.

      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, chaque entrée 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 la 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 Surveillance synthétique 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 des règles 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 Surveillance synthétique.

    Si vous prévoyez d'utiliser 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 page Créer des règles d'alerte à l'aide de l'API.

API

Lorsque vous créez une surveillance synthétique à l'aide de la 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. 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. Rédigez et déployez 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 de déploiement.

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

        • Mocha: SyntheticMochaSuite
        • Pas de mocha: SyntheticFunction.
      • Définissez le champ --runtime sur nodejs18.

      • Incluez l'indicateur --trigger-http.

      • Le champ --ingress-settings ne doit pas être spécifié ou doit être défini sur all.

      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, chaque entrée 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éfinissez le nom à afficher de la surveillance synthétique.
        • syntheticMonitor: définissez le nom complet de votre fonction Cloud.

      En cas de réussite, la réponse de 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 Surveillance synthétique 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 des règles 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 Surveillance synthétique.

    Si vous prévoyez d'utiliser 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 page 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 afin de surveiller cette vérification, procédez comme suit:

  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. Modifiez votre fichier de configuration Terraform, ajoutez une ressource google_storage_bucket, puis appliquez vos modifications.

    Le code suivant définit un bucket Cloud Storage dans 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, 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, 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 les surveillances synthétiques. 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 le panneau de navigation de la console Google Cloud, sélectionnez Monitoring, puis  Alertes :

        Accéder à l'interface des alertes

      2. Sélectionnez Gérer les canaux de notification.
      3. Accédez au type de canal que vous souhaitez ajouter, cliquez sur Ajouter, puis renseignez la boîte de dialogue.
    2. Pour créer une règle d'alerte, 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, 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 et 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 de systèmes, d'agents ou d'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 aux surveillances synthétiques

Cette section fournit des informations qui vous aideront à résoudre les problèmes liés à vos surveillances synthétiques.

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

Vous ouvrez le flux de création pour une surveillance synthétique et vous ê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 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 se résout automatiquement une fois que l'activation de l'API se propagera dans le backend.

Les requêtes HTTP sortantes ne sont pas tracées

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

Cloud Trace n'affichant qu'une seule trace.

Pour résoudre ce problème, assurez-vous que le rôle Agent Cloud Trace (roles/cloudtrace.agent) a été attribué à votre compte de service. 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 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 associées au rôle 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 Surveillances synthétiques répertorie une 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é, procédez comme 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 de 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 n'est donc pas en mesure d'exécuter la fonction.

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

    Si un message semblable au suivant s'affiche, cela signifie que 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 cet échec, examinez le code de la fonction et corrigez les erreurs qui empêchent la création ou le déploiement de la fonction.

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

État de l'avertissement

La page Surveillances synthétiques répertorie une surveillance synthétique avec l'état Warning. L'état Warning signifie que les résultats de l'exécution ne sont pas cohérents. Cela peut indiquer un problème de conception avec votre test ou indiquer que l'élément testé présente un comportement incohérent.

État "Échec"

La page Surveillances synthétiques répertorie une surveillance synthétique avec l'état Failing. Pour en savoir plus sur le motif de l'échec, consultez l'historique d'exécution 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 cet échec, 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 les moniteurs synthétiques.

  • Si l'échec renvoie une heure d'exécution de 0ms, il se peut que la fonction Cloud soit à court de mémoire. Pour résoudre cet échec, modifiez la fonction Cloud, puis augmentez la mémoire à au moins 2 Gio et définissez le champ "CPU" 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 et renvoie 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 l'échec, supprimez les règles d'alerte qui surveillent les résultats de la surveillance synthétique, puis supprimez la surveillance synthétique.

Étapes suivantes