Dans ce guide de démarrage rapide, vous allez utiliser Cloud Shell pour déployer un exemple d'application sur un cluster Google Kubernetes Engine (GKE).
L'application est écrite en Python.
Après le déploiement, vous utilisez curl
pour émettre une requête HTTP. Cette action entraîne la capture et l'envoi d'une trace à votre projet Google Cloud.
Enfin, vous utilisez l'interface Cloud Trace pour afficher les informations de latence de la trace que vous avez générée.
Avant de commencer
- 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.
-
Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.
-
Assurez-vous que la facturation est activée pour votre projet Cloud. Découvrez comment vérifier que la facturation est activée pour votre projet.
Télécharger et déployer votre application
Pour télécharger et déployer l'application, procédez comme suit :
Pour ouvrir Cloud Shell, cliquez sur Activer Cloud Shell dans la barre d'outils de Google Cloud Console :
Après quelques instants, une session Cloud Shell s'ouvre dans Google Cloud Console :
Pour télécharger le code source depuis GitHub, exécutez la commande suivante :
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.git
Pour activer l'API Google Kubernetes Engine, exécutez la commande suivante dans Cloud Shell :
gcloud services enable container.googleapis.com
Pour créer le cluster GKE nommé
demo
, exécutez la commande suivante dans Cloud Shell :gcloud container clusters create demo --zone us-west1-b
Cette commande nécessite 3 à 5 minutes. Une fois l'opération terminée, votre projet Google Cloud contient le cluster GKE nommé
demo
. Vous devez être autorisé à créer des clusters disposant d'un accès externe dans votre projet Google Cloud. Si Google Cloud se trouve dans une organisation ou dans un dossier, vous ne disposez peut-être pas de ces autorisations même si vous êtes le propriétaire du projet. Si cette commande échoue, contactez votre administrateur système.Pour vérifier que la création a réussi, exécutez la commande
kubectl
suivante :kubectl get nodes
Voici un exemple de résultat de cette commande :
NAME STATUS ROLES AGE VERSION gke-demo-default-pool-24680f3d-bzvg Ready <none> 26m v1.14.10-gke.27 gke-demo-default-pool-24680f3d-hfnq Ready <none> 26m v1.14.10-gke.27 gke-demo-default-pool-24680f3d-qnh6 Ready <none> 26m v1.14.10-gke.27
Déployez l'exemple d'application en exécutant la commande suivante :
cd python-docs-samples/trace/cloud-trace-demo-app && ./setup.sh
Le script
setup.sh
, qui fait partie de ce projet, configure trois services différents nomméscloud-trace-demo-a
,cloud-trace-demo-b
etcloud-trace-demo-c
. Étant donné que le script de configuration configure un service à la fois, la configuration nécessite plusieurs minutes. Voici un exemple de ce que le script imprime sur Cloud Shell lors de son exécution :Creating service a deployment.apps/cloud-trace-demo-a unchanged service/cloud-trace-demo-a unchanged Fetching the external IP of service a Passing external IP for the first service 34.82.132.95 to the second service template deployment.apps/cloud-trace-demo-b created service/cloud-trace-demo-b created Fetching the external IP of service b Passing external IP for the service b 35.230.0.131 to the service c deployment.apps/cloud-trace-demo-c created service/cloud-trace-demo-c created
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, exécutez la commande suivante :
curl $(kubectl get svc cloud-trace-demo-c -ojsonpath='{.status.loadBalancer.ingress[0].ip}')
La commande curl
génère une requête HTTP GET
et envoie la requête au service nommé cloud-trace-demo-c
. Une fois cette requête terminée, Helloworld!
est imprimé dans l'interface système.
Vous pouvez exécuter la commande curl
plusieurs fois pour générer plusieurs traces.
Afficher les données de trace
Pour ouvrir l'interface Cloud Trace, dans Google Cloud Console, cliquez sur menu Menu de navigation et sélectionnez Trace, ou cliquez sur le bouton suivant :
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 nouveau projet, le volet le plus intéressant de la fenêtre Présentation est celui intitulé Traces récentes :
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 list Liste de traces :
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 les détails d'une trace, sélectionnez un point dans le graphique ou une ligne dans la table. Cette action l'ouverture de deux volets qui affichent les détails de la trace sélectionnée :
Un volet affiche la trace dans un graphique en cascade et le volet affiche ses détails. Chaque ligne du graphique en cascade correspond à un délai.
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. Notez que les délais concernent trois adresses IP différentes, qui correspondent aux adresses IP des trois services.
À partir de cette trace, vous pouvez constater qu'une requête HTTP reçue par le nom de service cloud-trace-demo-c
est transmise au service cloud-trace-demo-b
, puis cloud-trace-demo-a
.
Le tableau des détails peut inclure un lien vers les données envoyées à Cloud Logging. Pour afficher les informations dans l'interface Cloud Logging, cliquez sur Afficher. La capture d'écran suivante illustre un exemple de journal généré par des données de trace :
Notez que les adresses IP affichées dans la vue en cascade correspondent aux adresses IP des services nommés cloud-trace-demo-a
et cloud-trace-demo-b
.
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 OpenCensus, et s'exécute sur un cluster Google Kubernetes Engine.
Les auteurs de l'application ont choisi d'utiliser le framework Flask, car son utilisation simplifie le développement d'applications et parce qu'ils voulaient utiliser le middleware OpenCensus Flask. Vous n'avez pas besoin d'utiliser le framework Flask si vous utilisez Python.
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 :
Les instructions d'importation d'application incluent une instruction pour
Flask
et pour plusieurs packages OpenCensus. LeStackdriverExporter
est l'objet qui envoie des données de trace à votre projet Google Cloud :L'application crée un composant de middleware qui utilise Flask comme framework HTTP :
Dans cette application, le champ
sampler
est défini par la méthode OpenCensusAlwaysOnSampler()
. Cette méthode renvoieTrue
pour chaque décision d'échantillonnage et garantit que 100 % des requêtes sont tracées. L'échantillonnage de toutes les requêtes n'est pas recommandé dans un environnement de production. Pour en savoir plus, consultez la section Taux d'échantillonnage.Dans la fonction
main
de l'application, créez le middleware Flask utilisantStackdriverExporter()
:L'application contient une modification supplémentaire qui n'est pas nécessaire, mais plutôt illustrative. Dans l'application, la réponse à la route
/
inclut l'en-têteX-Cloud-Trace-Context
:L'en-tête
X-Cloud-Trace-Context
est un en-tête HTTP qui contient des informations sur la trace actuelle, y compris son identifiant. Pour que différents services puissent ajouter des informations de délai à la même trace, ces services doivent pouvoir identifier l'identifiant de trace. Par défaut, le package OpenCensus inclut automatiquement ce contexte dans les en-têtes de réponse.
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
. Elle configure le service c
pour appeler le service b
, et le service b
pour appeler le service a
.
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 c
dans ce démarrage rapide, vous avez utilisé la commande curl
suivante :
curl $(kubectl get svc cloud-trace-demo-c -ojsonpath='{.status.loadBalancer.ingress[0].ip}')
La commande curl
fonctionne comme suit :
kubectl
récupère l'adresse IP du service nommécloud-trace-demo-c
.- La commande
curl
envoie ensuite la requête HTTP au servicec
. - Le service
c
reçoit la requête HTTP et envoie une requête au serviceb
. - Le service
b
reçoit la requête HTTP et envoie une requête au servicea
. - Le service
a
reçoit la requête et renvoie la chaîneHello
. La chaîneHello
est un mot clé transmis en tant qu'argument par défaut à ce service. - Le service
b
reçoit la réponse du servicea
, ajoute la chaîneworld
, puis renvoieHelloworld
. La chaîneworld
est un mot clé transmis en tant qu'argument par défaut à ce service. - Le service
c
reçoit la réponse du serviceb
, ajoute!
, puis renvoieHelloworld!
. - La réponse du service
c
est imprimée dans Cloud Shell.
Nettoyer
Pour éviter que les ressources utilisées dans ce guide démarrage rapide soient facturées sur votre compte Google Cloud :
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 :
- Dans Google Cloud Console, cliquez sur menu Menu de navigation, puis sélectionnez Accueil.
- Dans le volet Informations sur le projet, cliquez sur Accéder aux paramètres du projet.
- 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é
demo
en exécutant la commande suivante :gcloud container clusters delete demo --zone us-west1-b
Étape suivante
- Pour en savoir plus sur les langages et les plates-formes compatibles, consultez la page À propos de Cloud Trace.
- Pour en savoir plus sur la manière d'instrumenter vos applications, consultez la page Configurer Cloud Trace.
- Pour en savoir plus sur la fenêtre Vue d'ensemble, consultez la page Afficher les traces dans Google Cloud Console.
- Pour en savoir plus sur la fenêtre Liste de traces, consultez la page Rechercher et afficher des traces.
- Pour en savoir plus sur le graphique en cascade et les détails des traces, consultez la page Afficher les détails des trace.
- Pour en savoir plus sur les rapports d'analyse, consultez la page Créer et afficher des rapports d'analyse.
- Pour en savoir plus sur la gestion des clusters Google Kubernetes Engine, consultez la page kubectl.
- Consultez nos ressources sur DevOps et découvrez notre programme de recherche.