Affichez la latence des requêtes d'application

Découvrez comment collecter et afficher les données de latence de vos applications:

  1. Créer un cluster Google Kubernetes Engine (GKE) à l'aide de la Google Cloud CLI

  2. Téléchargez et déployez un exemple d'application sur votre cluster.

  3. Créer une trace en envoyant une requête HTTP à l'exemple d'application

  4. Affichez les informations de latence de la trace que vous avez créée.

  5. effectuer un nettoyage.


Pour obtenir des instructions détaillées sur cette tâche directement dans la console Google Cloud , cliquez sur Visite guidée :

Visite guidée


Avant de commencer

  1. Les contraintes de sécurité définies par votre organisation peuvent vous empêcher d'effectuer les étapes suivantes. Pour en savoir plus sur la résolution des problèmes, consultez Développer des applications dans un environnement Google Cloud limité.

  2. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  3. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  4. Make sure that billing is enabled for your Google Cloud project.

  5. Enable the Google Kubernetes Engine and Cloud Trace APIs.

    Enable the APIs

  6. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  7. Make sure that billing is enabled for your Google Cloud project.

  8. Enable the Google Kubernetes Engine and Cloud Trace APIs.

    Enable the APIs

  9. Créer un cluster GKE

    Ce guide crée un cluster GKE standard. Si vous utilisez le mode Autopilot pour Google Kubernetes Engine ou si vous activez Workload Identity Federation for GKE, vous devez configurer votre application pour qu'elle utilise Workload Identity Federation for GKE.

    1. Dans la barre d'outils, cliquez sur Activer Cloud Shell, puis effectuez les étapes suivantes dans Cloud Shell.

    2. Créez un cluster :

      gcloud container clusters create cloud-trace-demo --zone us-central1-c
      

      La commande précédente, qui prend plusieurs minutes, crée un cluster standard nommé cloud-trace-demo dans la zone us-central1-c.

    3. Configurez kubectl pour actualiser automatiquement ses identifiants afin d'utiliser la même identité que la Google Cloud CLI:

      gcloud container clusters get-credentials cloud-trace-demo --zone us-central1-c
      
    4. Vérifiez l'accès à votre cluster:

      kubectl get nodes
      

      Voici un exemple de sortie pour cette commande :

      NAME                                              STATUS   ROLES    AGE   VERSION
      gke-cloud-trace-demo-default-pool-063c0416-113s   Ready    <none>   78s   v1.22.12-gke.2300
      gke-cloud-trace-demo-default-pool-063c0416-1n27   Ready    <none>   79s   v1.22.12-gke.2300
      gke-cloud-trace-demo-default-pool-063c0416-frkd   Ready    <none>   78s   v1.22.12-gke.2300
      

    Télécharger et déployer une application

    Téléchargez et déployez une application Python qui utilise le framework Flask et le package OpenTelemetry. L'application est décrite dans la section À propos de l'application de cette page.

    Dans Cloud Shell, procédez comme suit :

    1. Clonez une application Python depuis GitHub:

      git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
      
    2. Exécutez la commande suivante pour déployer l'exemple d'application:

      cd python-docs-samples/trace/cloud-trace-demo-app-opentelemetry && ./setup.sh
      

      L'exécution du script setup.sh prend plusieurs minutes.

      Le script configure trois services à l'aide d'une image prédéfinie, puis attend que toutes les ressources soient provisionnées. Les charges de travail sont nommées cloud-trace-demo-a, cloud-trace-demo-b et cloud-trace-demo-c.

      Voici un exemple de sortie pour cette commande :

      deployment.apps/cloud-trace-demo-a is created
      service/cloud-trace-demo-a is created
      deployment.apps/cloud-trace-demo-b is created
      service/cloud-trace-demo-b is created
      deployment.apps/cloud-trace-demo-c is created
      service/cloud-trace-demo-c is created
      
      Wait for load balancer initialization complete......
      Completed.
      

    Créer des données de trace

    Une trace décrit le temps nécessaire à une application pour effectuer une seule opération.

    Pour créer une trace, exécutez la commande suivante dans Cloud Shell:

    curl $(kubectl get svc -o=jsonpath='{.items[?(@.metadata.name=="cloud-trace-demo-a")].status.loadBalancer.ingress[0].ip}')
    

    La réponse de la commande précédente se présente comme suit:

    Hello, I am service A
    And I am service B
    Hello, I am service C
    

    Vous pouvez exécuter la commande curl plusieurs fois pour générer plusieurs traces.

    Afficher les données de latence

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

      Accéder à Explorateur Trace

      Vous pouvez également accéder à cette page à l'aide de la barre de recherche.

      La capture d'écran suivante montre le résultat de l'exécution plusieurs fois de la commande curl. Le graphique affiche les données de latence agrégées pour les segments, qui décrivent les sous-opérations de trace.

      Fenêtre Explorateur Trace du guide de démarrage rapide.

    2. Pour afficher les détails d'une trace, sélectionnez un segment dans le graphique ou une ligne dans la table.

      La boîte de dialogue "Détails de la trace" s'ouvre, comme illustré dans la capture d'écran suivante :

      Le volet des détails affiche des informations supplémentaires sur chaque segment.

      Un diagramme de Gantt affiche des informations sur la trace sélectionnée. La première ligne du diagramme de Gantt correspond à la trace, et chaque ligne suivante est un segment de la trace.

    3. Pour afficher des informations détaillées sur un segment, sélectionnez-le dans le diagramme de Gantt.

    À propos de l'application

    L'exemple d'application utilisé dans ce guide de démarrage rapide est disponible dans un dépôt GitHub. Ce dépôt contient des informations sur l'utilisation de l'application dans des environnements autres que Cloud Shell. L'exemple d'application est écrit en Python, utilise le framework Flask et les packages OpenTelemetry, et s'exécute sur un cluster GKE.

    Ce guide crée un cluster GKE standard. Si vous utilisez le mode Autopilot pour Google Kubernetes Engine ou si vous activez Workload Identity Federation for GKE, vous devez configurer votre application pour qu'elle utilise Workload Identity Federation for GKE.

    Instrumentation

    Le fichier app.py du dépôt GitHub contient les outils nécessaires pour capturer et envoyer des données de trace à votre Google Cloud projet :

    • L'application importe plusieurs packages OpenTelemetry :

      from opentelemetry import trace
      from opentelemetry.exporter.cloud_trace import CloudTraceSpanExporter
      from opentelemetry.instrumentation.flask import FlaskInstrumentor
      from opentelemetry.instrumentation.requests import RequestsInstrumentor
      from opentelemetry.propagate import set_global_textmap
      from opentelemetry.propagators.cloud_trace_propagator import CloudTraceFormatPropagator
      from opentelemetry.sdk.trace import TracerProvider
      from opentelemetry.sdk.trace.export import BatchSpanProcessor
      
    • L'application instrumente les requêtes Web avec un contexte de trace et trace automatiquement les gestionnaires Flask et les requêtes vers d'autres services :

      app = flask.Flask(__name__)
      FlaskInstrumentor().instrument_app(app)
      RequestsInstrumentor().instrument()
    • L'application configure l'exportateur Cloud Trace en tant que fournisseur de trace, qui propage le contexte de trace au format Cloud Trace :

      def configure_exporter(exporter):
          """Configures OpenTelemetry context propagation to use Cloud Trace context
      
          Args:
              exporter: exporter instance to be configured in the OpenTelemetry tracer provider
          """
          set_global_textmap(CloudTraceFormatPropagator())
          tracer_provider = TracerProvider()
          tracer_provider.add_span_processor(BatchSpanProcessor(exporter))
          trace.set_tracer_provider(tracer_provider)
      
      
      configure_exporter(CloudTraceSpanExporter())
      tracer = trace.get_tracer(__name__)
    • L'extrait de code suivant montre comment envoyer des requêtes en Python. OpenTelemetry propage implicitement le contexte de trace pour vous avec vos requêtes sortantes :

      if endpoint is not None and endpoint != "":
          data = {"body": keyword}
          response = requests.get(
              endpoint,
              params=data,
          )
          return keyword + "\n" + response.text
      else:
          return keyword, 200
      
      

    Fonctionnement de l'application

    Pour plus de clarté, dans cette section, cloud-trace-demo est omis des noms de service. Par exemple, le service cloud-trace-demo-c est référencé en tant que c.

    Cette application crée trois services nommés a, b et c. Le service a est configuré pour appeler le service b, et le service b est configuré pour appeler le service c. Pour en savoir plus sur la configuration des services, consultez les fichiers YAML du dépôt GitHub.

    Lorsque vous avez envoyé une requête HTTP au service a dans ce démarrage rapide, vous avez utilisé la commande curl suivante :

    curl $(kubectl get svc -o=jsonpath='{.items[?(@.metadata.name=="cloud-trace-demo-a")].status.loadBalancer.ingress[0].ip}')
    

    La commande curl fonctionne comme suit :

    1. kubectl récupère l'adresse IP du service nommé cloud-trace-demo-a.
    2. La commande curl envoie ensuite la requête HTTP au service a.
    3. Le service a reçoit la requête HTTP et envoie une requête au service b.
    4. Le service b reçoit la requête HTTP et envoie une requête au service c.
    5. Le service c reçoit la requête HTTP du service b et renvoie la chaîne Hello, I am service C au service b.
    6. Le service b reçoit la réponse du service c, l'ajoute à la chaîne And I am service B et renvoie le résultat au service a.
    7. Le service a reçoit la réponse du service b et l'ajoute à la chaîne Hello, I am service A.
    8. La réponse du service a est imprimée dans Cloud Shell.

Effectuer un nettoyage

Pour éviter que les ressources utilisées sur cette page ne soient facturées sur votre compte Google Cloud , procédez comme suit :

Si vous avez créé un projet et que vous n'en avez plus besoin, supprimez-le.

Si vous avez utilisé un projet existant, procédez comme suit :

  1. Pour supprimer votre cluster, exécutez la commande suivante dans Cloud Shell:

    gcloud container clusters delete cloud-trace-demo --zone us-central1-c

Étapes suivantes