arrow_back

Déboguer des applications sur Google Kubernetes Engine

Testez vos connaissances et partagez-les avec notre communauté
done
Accédez à plus de 700 ateliers pratiques, badges de compétence et cours

Déboguer des applications sur Google Kubernetes Engine

Atelier 1 heure 15 minutes universal_currency_alt 5 crédits show_chart Intermédiaire
info Cet atelier peut intégrer des outils d'IA pour vous accompagner dans votre apprentissage.
Testez vos connaissances et partagez-les avec notre communauté
done
Accédez à plus de 700 ateliers pratiques, badges de compétence et cours

GSP736

Google Cloud – Ateliers adaptés au rythme de chacun

Présentation

Cloud Logging et l'outil associé, Cloud Monitoring, sont des produits complets qui sont tous deux profondément intégrés à Google Kubernetes Engine. Cet atelier vous apprend le fonctionnement de Cloud Logging avec les clusters GKE et les applications ainsi que quelques bonnes pratiques de collecte des journaux à travers plusieurs cas courants d'utilisation de la journalisation.

Objectifs de l'atelier

  • Utiliser Cloud Monitoring pour détecter les problèmes

  • Utiliser Cloud Logging pour dépanner une application qui s'exécute sur GKE

L'application de démonstration utilisée lors de l'atelier

Afin d'utiliser un exemple concret, vous allez dépanner une application de microservices de démonstration déployée sur un cluster GKE. Cette application de démonstration comporte de nombreux microservices associés à des dépendances. Vous générerez du trafic à l'aide d'un générateur de charge puis utiliserez Logging, Monitoring et GKE afin de relever l'erreur (alerte/métriques), identifierez une cause première à l'aide de Logging, puis corrigerez le problème/confirmerez que le problème a été corrigé à l'aide de Logging et de Monitoring.

f5227a639be42af5.png

Prérequis

Avant de cliquer sur le bouton "Démarrer l'atelier"

Lisez ces instructions. Les ateliers sont minutés, et vous ne pouvez pas les mettre en pause. Le minuteur, qui démarre lorsque vous cliquez sur Démarrer l'atelier, indique combien de temps les ressources Google Cloud resteront accessibles.

Cet atelier pratique vous permet de suivre vous-même les activités dans un véritable environnement cloud, et non dans un environnement de simulation ou de démonstration. Nous vous fournissons des identifiants temporaires pour vous connecter à Google Cloud le temps de l'atelier.

Pour réaliser cet atelier :

  • vous devez avoir accès à un navigateur Internet standard (nous vous recommandons d'utiliser Chrome) ;
Remarque : Ouvrez une fenêtre de navigateur en mode incognito/navigation privée pour effectuer cet atelier. Vous éviterez ainsi les conflits entre votre compte personnel et le temporaire étudiant, qui pourraient entraîner des frais supplémentaires facturés sur votre compte personnel.
  • vous disposez d'un temps limité ; une fois l'atelier commencé, vous ne pouvez pas le mettre en pause.
Remarque : Si vous possédez déjà votre propre compte ou projet Google Cloud, veillez à ne pas l'utiliser pour réaliser cet atelier afin d'éviter que des frais supplémentaires ne vous soient facturés.

Démarrer l'atelier et se connecter à la console Google Cloud

  1. Cliquez sur le bouton Démarrer l'atelier. Si l'atelier est payant, un pop-up s'affiche pour vous permettre de sélectionner un mode de paiement. Sur la gauche, vous trouverez le panneau Détails concernant l'atelier, qui contient les éléments suivants :

    • Le bouton Ouvrir la console Google Cloud
    • Le temps restant
    • Les identifiants temporaires que vous devez utiliser pour cet atelier
    • Des informations complémentaires vous permettant d'effectuer l'atelier
  2. Cliquez sur Ouvrir la console Google Cloud (ou effectuez un clic droit et sélectionnez Ouvrir le lien dans la fenêtre de navigation privée si vous utilisez le navigateur Chrome).

    L'atelier lance les ressources, puis ouvre la page Se connecter dans un nouvel onglet.

    Conseil : Réorganisez les onglets dans des fenêtres distinctes, placées côte à côte.

    Remarque : Si la boîte de dialogue Sélectionner un compte s'affiche, cliquez sur Utiliser un autre compte.
  3. Si nécessaire, copiez le nom d'utilisateur ci-dessous et collez-le dans la boîte de dialogue Se connecter.

    {{{user_0.username | "Username"}}}

    Vous trouverez également le nom d'utilisateur dans le panneau Détails concernant l'atelier.

  4. Cliquez sur Suivant.

  5. Copiez le mot de passe ci-dessous et collez-le dans la boîte de dialogue Bienvenue.

    {{{user_0.password | "Password"}}}

    Vous trouverez également le mot de passe dans le panneau Détails concernant l'atelier.

  6. Cliquez sur Suivant.

    Important : Vous devez utiliser les identifiants fournis pour l'atelier. Ne saisissez pas ceux de votre compte Google Cloud. Remarque : Si vous utilisez votre propre compte Google Cloud pour cet atelier, des frais supplémentaires peuvent vous être facturés.
  7. Accédez aux pages suivantes :

    • Acceptez les conditions d'utilisation.
    • N'ajoutez pas d'options de récupération ni d'authentification à deux facteurs (ce compte est temporaire).
    • Ne vous inscrivez pas à des essais gratuits.

Après quelques instants, la console Cloud s'ouvre dans cet onglet.

Remarque : Pour afficher un menu contenant la liste des produits et services Google Cloud, cliquez sur le menu de navigation en haut à gauche. Icône du menu de navigation

Activer Cloud Shell

Cloud Shell est une machine virtuelle qui contient de nombreux outils pour les développeurs. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud. Cloud Shell vous permet d'accéder via une ligne de commande à vos ressources Google Cloud.

  1. Cliquez sur Activer Cloud Shell Icône Activer Cloud Shell en haut de la console Google Cloud.

Une fois connecté, vous êtes en principe authentifié et le projet est défini sur votre ID_PROJET. Le résultat contient une ligne qui déclare YOUR_PROJECT_ID (VOTRE_ID_PROJET) pour cette session :

Your Cloud Platform project in this session is set to YOUR_PROJECT_ID

gcloud est l'outil de ligne de commande pour Google Cloud. Il est préinstallé sur Cloud Shell et permet la complétion par tabulation.

  1. (Facultatif) Vous pouvez lister les noms des comptes actifs à l'aide de cette commande :
gcloud auth list
  1. Cliquez sur Autoriser.

  2. Vous devez à présent obtenir le résultat suivant :

Résultat :

ACTIVE: * ACCOUNT: student-01-xxxxxxxxxxxx@qwiklabs.net To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (Facultatif) Vous pouvez lister les ID de projet à l'aide de cette commande :
gcloud config list project

Résultat :

[core] project = <ID_Projet>

Exemple de résultat :

[core] project = qwiklabs-gcp-44776a13dea667a6 Remarque : Pour consulter la documentation complète sur gcloud, dans Google Cloud, accédez au guide de présentation de la gcloud CLI.

Configurer l'infrastructure

Connectez-vous à un cluster Google Kubernetes Engine et confirmez qu'il a été créé correctement.

Dans Cloud Shell, définissez votre zone dans gcloud :

gcloud config set compute/zone us-central1-b

Définissez la variable d'ID du projet :

export PROJECT_ID=$(gcloud info --format='value(config.project)')

Utilisez la commande suivante pour afficher l'état du cluster :

gcloud container clusters list

L'état indiqué pour le cluster est "Provisionning" (En cours de provisionnement). Patientez un moment, puis exécutez à nouveau la commande ci-dessus jusqu'à ce que l'état passe à "Running" (En cours d'exécution). Cette opération peut prendre quelques minutes. Vérifiez que le cluster appelé central a bien été créé.

Vous pouvez aussi surveiller la progression de l'opération dans Cloud Console en suivant ce chemin : menu de navigation > Kubernetes Engine > Clusters.

Une fois que votre cluster indique "Running" (En cours d'exécution), récupérez ses identifiants :

gcloud container clusters get-credentials central --zone us-central1-b

(Résultat)

Fetching cluster endpoint and auth data. kubeconfig entry generated for central.

Vérifiez que les nœuds ont été créés :

kubectl get nodes

Vous devez normalement obtenir le résultat suivant :

NAME STATUS ROLES AGE VERSION gke-central-default-pool-5ff4130f-qz8v Ready <none> 24d v1.16.13-gke.1 gke-central-default--pool-5ff4130f-ssd2 Ready <none> 24d v1.16.13-gke.1 gke-central-default--pool-5ff4130f-tz63 Ready <none> 24d v1.16.13-gke.1 gke-central-default--pool-5ff4130f-zfmn Ready <none> 24d v1.16.13-gke.1

Déployer l'application

Maintenant, déployez l'application de microservices appelée Hipster Shop sur votre cluster, afin de créer une charge de travail que vous pourrez surveiller.

Exécutez la commande suivante pour cloner le dépôt :

git clone https://github.com/xiangshen-dk/microservices-demo.git

Accédez au répertoire microservices-demo :

cd microservices-demo

Installez l'application à l'aide de la commande kubectl :

kubectl apply -f release/kubernetes-manifests.yaml

Vérifiez que tout fonctionne correctement :

kubectl get pods

Le résultat doit ressembler à l'exemple ci-dessous. Avant de passer à l'étape suivante, réexécutez la commande jusqu'à ce que tous les pods indiquent "Running" (En cours d'exécution).

NAME READY STATUS RESTARTS AGE adservice-55f94cfd9c-4lvml 1/1 Running 0 20m cartservice-6f4946f9b8-6wtff 1/1 Running 2 20m checkoutservice-5688779d8c-l6crl 1/1 Running 0 20m currencyservice-665d6f4569-b4sbm 1/1 Running 0 20m emailservice-684c89bcb8-h48sq 1/1 Running 0 20m frontend-67c8475b7d-vktsn 1/1 Running 0 20m loadgenerator-6d646566db-p422w 1/1 Running 0 20m paymentservice-858d89d64c-hmpkg 1/1 Running 0 20m productcatalogservice-bcd85cb5-d6xp4 1/1 Running 0 20m recommendationservice-685d7d6cd9-pxd9g 1/1 Running 0 20m redis-cart-9b864d47f-c9xc6 1/1 Running 0 20m shippingservice-5948f9fb5c-vndcp 1/1 Running 0 20m

Cliquez sur Vérifier ma progression pour valider l'objectif. Déployer l'application

Exécutez la commande suivante pour obtenir l'adresse IP externe de l'application. Cette commande ne renverra une adresse IP qu'une fois le service déployé, vous devrez donc peut-être la répéter plusieurs fois jusqu'à ce qu'une adresse IP externe lui soit attribuée :

export EXTERNAL_IP=$(kubectl get service frontend-external | awk 'BEGIN { cnt=0; } { cnt+=1; if (cnt > 1) print $4; }')

Enfin, vérifiez que l'application est opérationnelle :

curl -o /dev/null -s -w "%{http_code}\n" http://$EXTERNAL_IP

La confirmation se présentera comme suit :

200

Une fois l'application déployée, vous pouvez aussi accéder à Cloud Console et consulter son état.

Sur la page Kubernetes Engine > Charges de travail, vous constaterez que tous les pods sont corrects.

4699e006d643e0cb.png

Cliquez maintenant sur Services et entrée et vérifiez que tous les services sont en ordre. Restez sur cet écran afin de configurer la surveillance pour l'application.

Ouvrir l'application

Faites défiler vers le bas jusqu'à frontend-external, puis cliquez sur l'IP des points de terminaison du service.

3ceac1fa2e6341fd.png

L'application doit s'ouvrir sur une page ressemblant à ceci :

c27b929771780db0.png

Créer une métrique basée sur les journaux

Maintenant, vous allez configurer Cloud Logging pour créer une métrique basée sur les journaux, c'est-à-dire une métrique personnalisée dans Cloud Monitoring et constituée d'entrées de journal. Les métriques basées sur les journaux sont pratiques pour compter le nombre d'entrées de journal et pour suivre la distribution d'une valeur dans les journaux. Dans ce cas de figure, vous allez utiliser la métrique basée sur les journaux pour compter le nombre d'erreurs dans votre service de frontend. Vous pourrez ensuite utiliser cette métrique dans les tableaux de bord et les alertes.

Revenez dans Cloud Console, et dans le menu de navigation, ouvrez Logging, puis cliquez sur Explorateur de journaux.

logging.png

Dans la zone de texte Générateur de requêtes, ajoutez la requête suivante :

resource.type="k8s_container" severity=ERROR labels."k8s-pod/app": "recommendationservice"

queryBuilder.png

Cliquez sur Exécuter la requête.

La requête que vous exécutez vous permet de rechercher toutes les erreurs renvoyées par le pod de frontend. Toutefois, vous ne devriez obtenir aucun résultat à ce stade, car aucune erreur ne s'est encore produite.

Pour créer la métrique basée sur les journaux, cliquez sur Créer une métrique.

create_metric.png

Nommez la métrique Error_Rate_SLI (SLI_taux_erreur) et cliquez sur Créer une métrique pour enregistrer la métrique basée sur les journaux :

8c94ae5ec9394f52.png

La métrique est maintenant répertoriée sous "Métriques définies par l'utilisateur" sur la page des métriques basées sur les journaux.

Cliquez sur Vérifier ma progression pour valider l'objectif. Créer une métrique basée sur les journaux

Créer une règle d'alerte

Les alertes permettent de détecter et de résoudre rapidement les problèmes qui surviennent dans les applications cloud. Vous allez maintenant utiliser Cloud Monitoring afin de surveiller la disponibilité de votre service de frontend en créant une règle d'alerte à partir de la métrique basée sur les journaux des erreurs de frontend que vous avez créée précédemment. Lorsque la condition de la règle d'alerte est remplie, Cloud Monitoring crée et affiche un incident dans Cloud Console.

Dans le menu de navigation, ouvrez Monitoring, puis cliquez sur Alertes.

Une fois l'espace de travail créé, cliquez sur Créer une règle en haut de la page.

Remarque : Si besoin, cliquez sur Essayer pour utiliser le processus de création d'alertes mis à jour.

Cliquez sur le menu déroulant Sélectionner une métrique. Désactivez l'option Afficher uniquement les ressources et les métriques actives.

Dans le champ Filtrer par nom de ressource ou de métrique, saisissez Error_Rate.

Cliquez sur Conteneur Kubernetes > Métrique basée sur les journaux. Sélectionnez logging/user/Error_Rate_SLI, puis cliquez sur Appliquer.

Votre écran doit désormais ressembler à ce qui suit :

create_policy.png

Définissez la fonction de fenêtre dynamique sur Taux.

Cliquez sur Suivant.

Indiquez 0,5 comme valeur de seuil.

Comme prévu, il n'y a aucune défaillance et votre application respecte l'objectif de niveau de service (SLO) de disponibilité.

Cliquez à nouveau sur Suivant.

Désactivez l'option Utiliser un canal de notification. Indiquez un nom d'alerte, comme SLI de taux d'erreur, puis cliquez sur Suivant.

Examinez l'alerte et cliquez sur Créer une règle.

Remarque : Vous ne créerez pas de canal de notification lors de cet atelier, mais vous devriez le faire pour vos applications exécutées en production, afin de pouvoir envoyer des notifications par e-mail, SMS, Pub/Sub ou encore via une application mobile ou des webhooks.

Cliquez sur Vérifier ma progression pour valider l'objectif. Créer une règle d'alerte

Déclencher une erreur d'application

Vous allez maintenant utiliser un générateur de charge afin de générer du trafic pour votre application Web. Étant donné qu'un bug a été introduit volontairement dans cette version de l'application, un certain volume de trafic déclenchera des erreurs. Vous allez suivre les étapes indiquées pour identifier le bug et le corriger.

Dans le menu de navigation, sélectionnez Moteur Kubernetes, puis Services et entrée.

Recherchez le service loadgenerator-external, puis cliquez sur le lien Points de terminaison.

31ec23d3f5d42e8e.png

Vous pouvez également ouvrir un nouvel onglet ou une nouvelle fenêtre de navigateur et copier puis coller l'adresse IP dans le champ d'URL, par exemple : http://\[loadgenerator-external-ip\]

La page du générateur de charge Locust s'affiche :

16853817b5cba2ca.png

Locust est un générateur de charge Open Source qui permet d'effectuer un test de charge sur une application Web. Il peut simuler l'accès simultané aux points de terminaison de votre application par un certain nombre d'utilisateurs à un taux d'apparition donné.

Simulez l'accès à l'application par 300 utilisateurs avec un taux d'apparition de 30. Locust ajoutera 30 utilisateurs par seconde jusqu'à atteindre 300 utilisateurs.

Pour le champ d'hôte, vous utiliserez frontend-external. Copiez l'URL de la page "Services et entrée", en veillant à exclure le port. Exemple :

90d88d8c7bcd809c.png

Cliquez sur le bouton Démarrer le travail en essaim. Vous devriez avoir environ 300 utilisateurs sur les URL prédéfinies en quelques secondes.

fc400e03937ef0fa.png

Cliquez sur l'onglet Échecs pour vérifier que des erreurs commencent à se produire. Vous constatez un grand nombre d'erreurs 500.

bb15983ca59467a4.png

Par ailleurs, si vous cliquez sur un produit sur la page d'accueil, elle est soit extrêmement lente, soit vous recevez des erreurs semblables à celle-ci :

907b0b1ffeb28f49.png

Confirmer l'alerte et les erreurs d'application

Dans le menu de navigation de Cloud Console, cliquez sur Monitoring, puis sur Alertes. Un incident concernant logging/user/Error_Rate_SLI doit s'afficher rapidement. Si vous ne voyez pas d'incident tout de suite, patientez une à deux minutes, puis actualisez l'affichage. Le déclenchement de l'alerte peut prendre jusqu'à cinq minutes.

Cliquez sur le lien de l'incident :

incidents.png

La page Informations s'affiche. Cliquez sur le lien AFFICHER LES JOURNAUX pour voir les journaux associés au pod.

incident_details.png

Vous pouvez également cliquer sur l'étiquette Erreur dans le panneau "Explorateur" du champ "Journaux" pour n'interroger que les erreurs.

Vous pouvez également cliquer sur le champ d'aperçu de la requête pour afficher le générateur de requêtes, puis cliquer sur le menu déroulant Gravité et ajouter Erreur à la requête. Cliquez sur le bouton Ajouter, puis sur Exécuter la requête. Le menu déroulant permet d'ajouter plusieurs valeurs de gravité.

Dans tous les cas, le résultat ajoute severity=ERROR à votre requête. Ensuite, vous devriez recevoir tous les messages d'erreur pour le pod RecommendationService.

266b24ced4e1f7e8.png

Consultez les informations concernant une erreur en développant l'événement associé. Exemple :

c9c267cc1865d963.png

Développez le champ textPayload. Cliquez sur le message d'erreur et sélectionnez Ajouter un champ à la ligne de résumé pour que les messages d'erreur s'affichent en tant que champ de résumé :

94adf8d4717a0b3e.png

Ici, vous pouvez constater que les erreurs sont en effet nombreuses pour le service RecommendationService. Les messages d'erreur indiquent que le service RecommendationService n'a pas pu se connecter à certains services en aval afin de récupérer des produits ou des recommandations. Toutefois, la cause première des erreurs n'est toujours pas claire.

900dcc7807b9044d.png

Si vous réexaminez le schéma de l'architecture, vous constaterez que le service RecommendationService fournit une liste de recommandations aux services Frontend. Toutefois, le service Frontend et le service RecommendationService appellent tous les deux ProductCatalogService afin d'obtenir une liste de produits.

ca416c3d4491bb07.png

Lors de la prochaine étape, vous allez examiner les métriques du suspect principal, ProductCatalogService, et rechercher d'éventuelles anomalies. Dans tous les cas, vous pourrez examiner les journaux en détail pour obtenir des insights.

Dépannage à l'aide du tableau de bord et des journaux Kubernetes

Pour consulter les métriques, pensez en premier lieu à la section Kubernetes Engine de la console Monitoring (menu de navigation > Monitoring > Tableaux de bord > GKE).

Consultez la section Charges de travail.

Accédez à Kubernetes Engine > Charges de travail > productcatalogservice. Vous pouvez voir que le pod du service plante et redémarre en permanence.

ccf430faaf71a1f1.png

Voyez maintenant si les journaux contiennent des informations intéressantes.

Vous pouvez accéder facilement à vos journaux de conteneur de deux manières :

  1. Cliquez sur l'onglet Journaux pour afficher un aperçu des journaux les plus récents. Ensuite, cliquez sur le bouton de lien externe en haut à droite du panneau des journaux pour revenir dans l'explorateur de journaux.

GKE-OiC.png

  1. Sur la page de l'aperçu, cliquez sur le lien Journaux de conteneur de la page des détails du déploiement.

c0c3d037c56b6379.png

Vous vous trouvez de nouveau sur la page de l'explorateur de journaux, cette fois avec une requête prédéfinie, filtrée spécialement pour les journaux du conteneur que vous examiniez dans GKE.

Dans la visionneuse de journaux, les messages des journaux et l'histogramme indiquent tous les deux que le conteneur analyse de façon répétée les catalogues de produits sur une courte durée. Cela semble très inefficace.

2535e56aae8ea188.png

En bas des résultats de la requête, il peut également y avoir une erreur d'exécution comme celle-ci :

panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation

Elle pourrait être à l'origine du plantage du pod.

Pour mieux en comprendre la cause, recherchez le message du journal dans le code.

Dans Cloud Shell, exécutez la commande suivante :

grep -nri 'successfully parsed product catalog json' src

Le résultat doit se présenter sous la forme suivante, avec le nom du fichier source accompagné d'un numéro de ligne :

src/productcatalogservice/server.go:237: log.Info("successfully parsed product catalog json")

Pour voir le fichier source, cliquez sur le bouton Ouvrir l'éditeur dans le menu Cloud Shell, puis sur Ouvrir dans une nouvelle fenêtre. Si l'erreur "Impossible de charger l'éditeur de code, car les cookies tiers sont désactivés" s'affiche, cliquez sur l'œil en haut de la page du navigateur Chrome.

a3250c575390919d.png

Cliquez sur le fichier microservices-demo/src/productcatalogservice/server.go, faites défiler vers le bas jusqu'à la ligne 237, et vous constaterez que la méthode readCatalogFile renvoie ce message :

93c9981272a13ab4.png

En regardant de plus près, vous constaterez que si la variable booléenne reloadCatalog a la valeur "true", le service s'actualise et analyse le catalogue de produits à chaque fois qu'elle est appelée, ce qui semble inutile.

Si vous recherchez la variable reloadCatalog dans le code, vous verrez qu'elle est contrôlée par la variable d'environnement ENABLE\_RELOAD et qu'elle crée un message de journal sur son état.

cf7083d2031e533.png

Vérifiez à nouveau les journaux en ajoutant ce message à votre requête, puis recherchez les éventuelles entrées correspondantes.

Revenez dans l'onglet où l'explorateur de journaux est ouvert et ajoutez la ligne suivante à la requête :

jsonPayload.message:"catalog reloading"

La requête complète dans le générateur de requêtes se présente comme suit :

resource.type="k8s_container" resource.labels.location="us-central1-b" resource.labels.cluster_name="central" resource.labels.namespace_name="default" labels.k8s-pod/app="productcatalogservice" jsonPayload.message:"catalog reloading"

Cliquez à nouveau sur Exécuter la requête et recherchez le message "Enable catalog reloading" dans le journal du conteneur. Ce message confirme que la fonction d'actualisation du catalogue est activée.

b6c5202d81c2f1cb.png

À ce stade, vous pouvez avoir la certitude que l'erreur de frontend a été causée par une contrainte trop importante liée au chargement du catalogue pour chaque requête. Lorsque vous avez augmenté la charge, le dépassement a causé l'échec du service et généré l'erreur.

Corrigez le problème et vérifiez le résultat

En vous appuyant sur le code et le contenu des journaux, essayez de corriger le problème en désactivant l'actualisation du catalogue. Maintenant, supprimez la variable d'environnement ENABLE_RELOAD correspondant au service du catalogue de produits. Une fois les modifications de variable effectuées, vous pouvez redéployer l'application et vérifier que les modifications ont permis de résoudre le problème observé précédemment.

Cliquez sur le bouton Ouvrir le terminal pour revenir dans le terminal Cloud Shell s'il s'est fermé.

Exécutez la commande suivante :

grep -A1 -ni ENABLE_RELOAD release/kubernetes-manifests.yaml

Le résultat indique le numéro de ligne de la variable d'environnement dans le fichier manifeste :

373: - name: ENABLE_RELOAD 374- value: "1"

Supprimez ces deux lignes pour désactiver l'actualisation en exécutant la commande suivante :

sed -i -e '373,374d' release/kubernetes-manifests.yaml

Ensuite, appliquez à nouveau le fichier manifeste :

kubectl apply -f release/kubernetes-manifests.yaml

Vous remarquerez que seul le service productcatalogservice est configuré. Les autres services n'ont pas été modifiés.

Revenez sur la page des détails du déploiement (menu de navigation > Kubernetes Engine > Charges de travail > productcatalogservice) et patientez jusqu'à la fin de l'exécution du pod. Patientez deux à trois minutes, ou jusqu'à ce que vous puissiez confirmer la fin du plantage.

a5ec7a95d8b4c404.png

Si vous cliquez à nouveau sur le lien Journaux de conteneur, vous verrez que les messages indiquant que l'analyse du catalogue au format JSON a réussi qui s'affichaient plusieurs fois ont disparu :

743fb0a69ccb98e2.png

Si vous revenez dans l'URL de l'application Web et cliquez sur les produits sur la page d'accueil, vous constaterez aussi qu'elle est beaucoup plus réactive, et vous ne devriez plus rencontrer aucune erreur HTTP.

Revenez dans le générateur de charge et cliquez sur le bouton Réinitialiser les statistiques en haut à droite de l'écran. Le pourcentage d'échec est réinitialisé. Il ne devrait plus augmenter.

213688aa3238649f.png

Toutes les coches ci-dessus indiquent que le problème a été corrigé. Si l'erreur 500 s'affiche toujours, patientez encore quelques minutes, puis réessayez de cliquer sur un produit.

Félicitations

Vous avez utilisé Cloud Logging et Cloud Monitoring pour trouver une erreur dans une version volontairement mal configurée de l'application de démonstration de microservices. Il s'agit d'un processus de dépannage semblable à celui que vous utiliseriez afin de filtrer les problèmes concernant vos applications GKE dans un environnement de production.

Vous avez commencé par déployer l'application sur GKE, puis vous avez configuré une métrique et une alerte pour les erreurs du frontend. Ensuite, vous avez généré une charge et remarqué que l'alerte se déclenchait. En vous appuyant sur l'alerte, vous avez pu réduire le problème à certains services utilisant Cloud Logging. Ensuite, vous avez utilisé Cloud Monitoring et l'UI GKE pour examiner les métriques des services GKE. Enfin, pour corriger le problème, vous avez déployé une configuration mise à jour et confirmé que le correctif avait permis de résoudre les erreurs des journaux.

CloudOpsGKE_125x135.png

Terminer votre quête

Cet atelier d'auto-formation fait partie de la quête Qwiklabs Google Cloud's Operations Suite on GKE. Une quête est une série d'ateliers associés qui constituent une formation. Si vous terminez cette quête, vous obtiendrez le badge ci-dessus attestant de votre réussite. Vous pouvez rendre publics les badges que vous recevez et ajouter leur lien dans votre CV en ligne ou sur vos comptes de réseaux sociaux. Inscrivez-vous à cette quête pour obtenir immédiatement les crédits associés à cet atelier si vous l'avez suivi. Découvrez les autres quêtes Qwiklabs disponibles.

Atelier suivant

Continuez sur votre lancée en suivant l'atelier Cloud Logging sur Kubernetes Engine ou consultez ces suggestions :

Étapes suivantes et informations supplémentaires

  • Cet atelier s'inspire de cet article de blog concernant l'utilisation de Logging pour vos applications exécutées sur GKE.
  • L'article de suivi sur la manière dont les équipes DevOps peuvent utiliser Cloud Monitoring et Cloud Logging pour identifier rapidement les problèmes est également susceptible de vous intéresser.

Formations et certifications Google Cloud

Les formations et certifications Google Cloud vous aident à tirer pleinement parti des technologies Google Cloud. Nos cours portent sur les compétences techniques et les bonnes pratiques à suivre pour être rapidement opérationnel et poursuivre votre apprentissage. Nous proposons des formations pour tous les niveaux, à la demande, en salle et à distance, pour nous adapter aux emplois du temps de chacun. Les certifications vous permettent de valider et de démontrer vos compétences et votre expérience en matière de technologies Google Cloud.

Dernière mise à jour du manuel : 14 avril 2022
Dernier test de l'atelier : 14 avril 2022

Copyright 2024 Google LLC Tous droits réservés. Google et le logo Google sont des marques de Google LLC. Tous les autres noms d'entreprises et de produits peuvent être des marques des entreprises auxquelles ils sont associés.

Ce contenu n'est pas disponible pour le moment

Nous vous préviendrons par e-mail lorsqu'il sera disponible

Parfait !

Nous vous contacterons par e-mail s'il devient disponible