Restez organisé à l'aide des collections Enregistrez et classez les contenus selon vos préférences.
Guide de démarrage rapide: Tracer la latence des applications à l'aide de Cloud Trace

Tracer la latence des applications à l'aide de Cloud Trace

Découvrez comment utiliser Cloud Trace en procédant comme suit :

  1. Déployer un exemple d'application sur un cluster Google Kubernetes Engine (GKE)

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

  3. Utilisez l'interface Cloud Trace pour afficher les informations de latence de la trace que vous avez créée.

Avant de commencer

Certaines étapes de ce document risquent de ne pas fonctionner correctement si votre organisation applique des contraintes à votre environnement Google Cloud. Dans ce cas, vous ne pourrez peut-être pas effectuer des tâches telles que la création d'adresses IP publiques ou de clés de compte de service. Si vous effectuez une requête qui renvoie une erreur concernant des contraintes, consultez la section Développer des applications dans un environnement Google Cloud limité.

Créez un projet avec la facturation activée :

  1. Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
  2. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  3. Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier si la facturation est activée sur un projet.

  4. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  5. Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier si la facturation est activée sur un projet.

Télécharger et déployer votre application

Pour télécharger et déployer l'application, procédez comme suit :

  1. Pour ouvrir Cloud Shell, cliquez sur Activer Cloud Shell dans la barre d'outils de la console Google Cloud:

    Activez Cloud Shell.

    Après quelques instants, une session Cloud Shell s'ouvre dans la console Google Cloud.

  2. Pour télécharger le code source depuis GitHub, exécutez la commande suivante :

    git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
    
  3. Activez l'API Google Kubernetes Engine à l'aide de la commande suivante:

    gcloud services enable container.googleapis.com
    
  4. Pour créer le cluster GKE nommé cloud-trace-demo dans la zone us-central1-c, exécutez les commandes suivantes dans Cloud Shell:

    ZONE=us-central1-c
    gcloud container clusters create cloud-trace-demo \
       --zone $ZONE
    

    Cette opération prend quelques minutes. Une fois l'opération terminée, votre projet Google Cloud contient le cluster GKE nommé cloud-trace-demo. Vous devez être autorisé à créer des clusters disposant d'un accès externe dans votre projet Google Cloud.

  5. Mettez à jour vos identifiants de cluster GKE en exécutant la commande suivante:

    gcloud container clusters get-credentials cloud-trace-demo --zone $ZONE
    
  6. Vérifiez l'accès au cluster en exécutant la commande suivante:

    kubectl get nodes
    

    Voici un exemple de résultat de 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
    
  7. Déployez l'exemple d'application en exécutant la commande suivante :

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

    Le script setup.sh configure trois services de l'application à l'aide d'une image prédéfinie. Les charges de travail sont nommées cloud-trace-demo-a, cloud-trace-demo-b et cloud-trace-demo-c. Le script d'installation attend que toutes les ressources soient provisionnées. La configuration peut donc prendre plusieurs minutes.

    Voici un exemple de résultat de 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. You can access the demo at http://34.82.132.95/
    

Créer une trace

Une trace décrit le temps nécessaire à une application pour effectuer une seule opération. Chaque trace comprend un ou plusieurs délais. Un délai décrit le temps nécessaire pour effectuer une sous-opération complète. Par exemple, une trace peut décrire le temps nécessaire pour traiter une requête entrante d'un utilisateur et renvoyer une réponse. Un délai peut décrire la durée requise pour un appel RPC particulier. Pour en savoir plus, consultez le modèle de données de Cloud Trace.

Pour créer une trace en envoyant une requête curl à cloud-trace-demo-a, utilisez la commande suivante:

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

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

La sortie ressemble à ceci :

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

Afficher les données de trace

Dans la console Google Cloud, sélectionnez Cloud Trace ou cliquez sur le bouton suivant:

Accéder à Stackdriver Trace

Fenêtre Présentation

La fenêtre Vue d'ensemble est la vue par défaut dans Trace. Cette fenêtre affiche des données de latence et des informations récapitulatives, y compris un rapport d'analyse. Si vous avez créé un projet, le volet le plus intéressant de la fenêtre Overview (Aperçu) est le volet Recent traces (Traces récentes) :

Volet Traces récentes affichant les traces les plus récentes et leur latence.

Ce volet répertorie les traces les plus récentes et leur latence. Pour afficher les détails d'une trace, cliquez sur son lien.

Fenêtre Liste de traces

Dans le volet de navigation de Trace, cliquez sur Liste de traces :

Fenêtre Liste de traces pour le démarrage rapide.

Cette fenêtre affiche un graphique et une table. Chaque point du graphique représente une trace. Chaque point correspond également à une ligne dans la table. Dans la capture d'écran précédente, plusieurs traces sont répertoriées, ce qui indique que la commande curl a été exécutée plusieurs fois.

Pour afficher une trace en détail, sélectionnez un point dans le graphique ou une ligne du tableau:

Cascade qui montre cinq travées.

Une fois que vous avez sélectionné un point, un graphique en cascade s'affiche, chaque ligne correspondant à un intervalle. Les détails du délai, tels que ses libellés de trace, sa méthode et ses informations récapitulatives sur la latence de la commande, sont affichés dans le tableau de détails. Pour afficher les détails d'un délai, cliquez sur la ligne correspondante dans le graphique en cascade:

Des détails supplémentaires sur chaque délai sont affichés dans le volet Détails.

Fenêtre Rapports d'analyse

Pour afficher ou créer un rapport, dans le volet de navigation Trace, cliquez sur Rapports d'analyse. Trace crée automatiquement des rapports quotidiens. Pour ce projet, les données sont insuffisantes pour créer un rapport.

À 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 Google Kubernetes Engine.

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 projet Google Cloud :

  • 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 le contexte de trace et suit 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 traces, qui propage le contexte de trace au format Cloud Trace:

    def configure_exporter(exporter):
        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, 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

Afin d'éviter que des frais ne soient facturés sur votre compte Google Cloud pour les ressources utilisées sur cette page, procédez comme suit :

  • Si vous avez créé un projet Google Cloud pour ce démarrage rapide, supprimez-le pour ne plus générer de frais. Pour supprimer votre projet, procédez comme suit :

    1. Dans la console Google Cloud, cliquez sur Menu de navigation, puis sélectionnez Accueil.
    2. Dans le volet Informations sur le projet, cliquez sur Accéder aux paramètres du projet.
    3. Dans la fenêtre Paramètres, cliquez sur Arrêter, puis suivez les étapes restantes.
  • Si vous n'avez pas créé de projet Google Cloud pour ce démarrage rapide, supprimez le cluster Google Kubernetes Engine nommé cloud-trace-demo en exécutant la commande suivante:

    gcloud container clusters delete cloud-trace-demo --zone $ZONE
    

Étapes suivantes