GSP1088

Présentation
Dans cet atelier, vous allez découvrir les fonctionnalités et les outils fournis par Cloud Logging pour l'analyse de vos applications.
Points abordés
- Utiliser efficacement Cloud Logging et en savoir plus sur les applications qui s'exécutent sur GKE
- Créer et exécuter efficacement des requêtes à l'aide de l'analyse de journaux
L'application de démonstration utilisée lors de l'atelier
Afin d'utiliser un exemple concret, vous allez travailler sur un scénario basé sur une application exemple 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.
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 les activités dans un véritable environnement cloud, et non dans un environnement de simulation ou de démonstration. Des identifiants temporaires vous sont fournis pour vous permettre de 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 (recommandé) ou de navigation privée pour effectuer cet atelier. Vous éviterez ainsi les conflits entre votre compte personnel et le compte temporaire de participant, qui pourraient entraîner des frais supplémentaires facturés sur votre compte personnel.
- Vous disposez d'un temps limité. N'oubliez pas qu'une fois l'atelier commencé, vous ne pouvez pas le mettre en pause.
Remarque : Utilisez uniquement le compte de participant pour cet atelier. Si vous utilisez un autre compte Google Cloud, des frais peuvent être facturés à ce compte.
Démarrer l'atelier et se connecter à la console Google Cloud
-
Cliquez sur le bouton Démarrer l'atelier. Si l'atelier est payant, une boîte de dialogue 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
-
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.
-
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".
-
Cliquez sur Suivant.
-
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".
-
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.
-
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 sans frais.
Après quelques instants, la console Cloud s'ouvre dans cet onglet.
Remarque : Pour accéder aux produits et services Google Cloud, cliquez sur le menu de navigation ou saisissez le nom du service ou du produit dans le champ Recherche.
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.
-
Cliquez sur Activer Cloud Shell
en haut de la console Google Cloud.
-
Passez les fenêtres suivantes :
- Accédez à la fenêtre d'informations de Cloud Shell.
- Autorisez Cloud Shell à utiliser vos identifiants pour effectuer des appels d'API 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 l'ID_PROJET pour cette session :
Your Cloud Platform project in this session is set to {{{project_0.project_id | "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.
- (Facultatif) Vous pouvez lister les noms des comptes actifs à l'aide de cette commande :
gcloud auth list
- Cliquez sur Autoriser.
Résultat :
ACTIVE: *
ACCOUNT: {{{user_0.username | "ACCOUNT"}}}
To set the active account, run:
$ gcloud config set account `ACCOUNT`
- (Facultatif) Vous pouvez lister les ID de projet à l'aide de cette commande :
gcloud config list project
Résultat :
[core]
project = {{{project_0.project_id | "PROJECT_ID"}}}
Remarque : Pour consulter la documentation complète sur gcloud
, dans Google Cloud, accédez au guide de présentation de la gcloud CLI.
Tâche 1 : Configurer l'infrastructure
Vérifier le cluster GKE
Connectez-vous à un cluster Google Kubernetes Engine et confirmez qu'il a été créé correctement.
1. Dans Cloud Shell, définissez votre zone dans gcloud
:
gcloud config set compute/zone {{{project_0.default_zone|placeholder}}}
- Utilisez la commande suivante pour afficher l'état du cluster :
gcloud container clusters list
L'état doit ressembler à ce qui suit :
NAME: day2-ops
LOCATION: {{{project_0.default_zone|placeholder}}}
MASTER_VERSION: 1.24.3-gke.2100
MASTER_IP: 34.68.183.6
MACHINE_TYPE: e2-standard-2
NODE_VERSION: 1.24.3-gke.2100
NUM_NODES: 4
STATUS: RUNNING
L'état indiqué pour le cluster est "RUNNING" (En cours d'exécution). Si votre cluster indique "PROVISIONING" (En cours de provisionnement), attendez un peu et exécutez une nouvelle fois la commande ci-dessus. Réexécutez la commande jusqu'à ce que l'état "RUNNING" (En cours d'exécution) soit indiqué.
Vous pouvez aussi surveiller la progression de l'opération dans la console Cloud 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 day2-ops --region {{{project_0.default_region|placeholder}}}
(Résultat)
Fetching cluster endpoint and auth data.
kubeconfig entry generated for day2-ops.
- 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-day2-ops-default-pool-b3081059-bskv Ready <none> 3m32s v1.24.3-gke.2100
gke-day2-ops-default-pool-b3081059-dt73 Ready <none> 3m30s v1.24.3-gke.2100
gke-day2-ops-default-pool-b3081059-g1m3 Ready <none> 3m31s v1.24.3-gke.2100
gke-day2-ops-default-pool-b3081059-wq4b Ready <none> 3m31s v1.24.3-gke.2100
Tâche 2 : Déployer l'application
Vous allez maintenant déployer une application de microservices appelée Online Boutique sur votre cluster afin de créer une charge de travail à surveiller.
- Exécutez la commande suivante pour cloner le dépôt :
git clone https://github.com/GoogleCloudPlatform/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
- 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 -o jsonpath="{.status.loadBalancer.ingress[0].ip}")
echo $EXTERNAL_IP
(Exemple de résultat)
35.222.235.86
- 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 fonctionnent.
- Cliquez ensuite sur Services et Ingress, puis vérifiez que tous les services sont corrects.
Ouvrir l'application
Sous Service et Ingress, cliquez sur l'adresse IP de point de terminaison du service frontend-external :
L'application doit s'ouvrir sur une page ressemblant à ceci :
Cliquez sur Vérifier ma progression pour valider l'objectif.
Déployer l'application
Tâche 4 : Gérer les buckets de journaux
Deux options s'offrent à vous pour activer l'analyse de journaux. Vous pouvez mettre à niveau un bucket existant ou créer un bucket de journaux dans lequel l'analyse de journaux est activée.
Mettre à niveau un bucket existant
Suivez ces étapes pour mettre à niveau un bucket de journaux existant :
-
Dans le menu de gauche, ouvrez Journalisation, puis cliquez sur Stockage des journaux.
-
Cliquez sur l'option METTRE À NIVEAU d'un bucket existant, par exemple le bucket _Default
.
-
Cliquez sur METTRE À NIVEAU dans la fenêtre pop-up.
-
Attendez la fin de la mise à niveau. Au début, l'état est Non éligible pour la mise à niveau. Une fois la mise à niveau terminée, l'état est Mis à niveau.
-
Cliquez sur le bouton déroulant OUVRIR.
-
Sélectionnez la vue _AllLogs
: la page "Analyse de journaux" s'ouvre.
Créer un bucket de journaux
Vous pouvez également configurer Cloud Logging pour créer un bucket de journaux dans lequel l'analyse de journaux est activée.
-
Dans le menu de gauche, ouvrez Journalisation, puis cliquez sur Stockage des journaux.
-
Cliquez sur CRÉER UN BUCKET DE JOURNAUX en haut de la page.
-
Attribuez un nom au bucket, par exemple day2ops-log.
-
Cochez les cases Effectuer la mise à niveau pour utiliser l'analyse de journaux et Créer un ensemble de données associé dans BigQuery.
-
Saisissez un nom d'ensemble de données tel que day2ops_log.
Sélectionnez Créer un ensemble de données associé dans BigQuery pour créer un ensemble de données dans BigQuery (s'il n'existe pas déjà). De cette manière, vous pouvez exécuter des requêtes dans BigQuery.
- Enfin, cliquez sur Créer un bucket pour créer un bucket de journaux.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Créer un bucket de journaux
Écrire dans le nouveau bucket de journaux
Vous pouvez créer un récepteur de journaux pour utiliser le nouveau bucket de journaux. Vous pouvez le faire directement depuis le routeur de journaux ou depuis l'explorateur de journaux. Exécutez des requêtes de journaux pour sélectionner et filtrer les journaux qui vous intéressent et créer un récepteur. L'avantage de cette approche est que la requête du journal est automatiquement copiée dans la configuration du récepteur en tant que filtre.
- Dans la partie supérieure droite de l'explorateur de journaux, activez l'option Afficher la requête et exécutez la requête suivante dans le champ de requête :
resource.type="k8s_container"
- Cliquez sur Créer un récepteur.
-
Nommez le récepteur, par exemple day2ops-sink.
-
Cliquez sur SUIVANT.
-
Sélectionnez Bucket Cloud Logging dans la liste déroulante du service du récepteur.
-
Sélectionnez le bucket de journaux que vous venez de créer.
-
Cliquez sur SUIVANT.
La requête de type de ressource doit s'afficher dans le filtre.
- Cliquez sur CRÉER UN RÉCEPTEUR.
Patientez quelques instants pendant la création du récepteur.
Cliquez sur Vérifier ma progression pour valider l'objectif.
Créer le récepteur de journal
Lire des données à partir du nouveau bucket de journaux
Revenez à l'explorateur de journaux. Comme le montre la capture d'écran ci-dessous, il existe un grand nombre de types de ressources différents pour les journaux.
-
Pour afficher les journaux dans le nouveau bucket de journaux, cliquez sur AFFINER LE CHAMP D'APPLICATION en haut de la page.
-
Sélectionnez Affiner la recherche par espace de stockage, puis choisissez le bucket de journaux que vous venez de créer.
-
Cliquez sur APPLIQUER.
Le seul type de ressources affiché correspond aux conteneurs Kubernetes et le nombre d'entrées de journaux affiché est beaucoup plus bas. En effet, seuls les journaux filtrés sont envoyés au bucket.
Tâche 5 : Analyse de journaux
- À gauche, cliquez sur Analyse de journaux sous Journalisation pour accéder à la fonctionnalité. Ce type de page s'affiche :
Si votre champ de requête est vide ou que vous avez oublié le nom de la table que vous vouliez utiliser, vous pouvez cliquer sur le bouton Requête pour afficher l'exemple de requête.
Vous pouvez ensuite exécuter vos propres requêtes dans le champ de requête. Voici quelques exemples.
Important : Le nom de la vue de journal dans la clause FROM
est différent pour les buckets de journaux. Vous devez vous assurer que vous utilisez le nom de vue correct. Reportez-vous à l'étape précédente pour effectuer la vérification.
Trouver les erreurs les plus récentes
Voici comment identifier les erreurs les plus récentes à partir des conteneurs :
SELECT
TIMESTAMP,
JSON_VALUE(resource.labels.container_name) AS container,
json_payload
FROM
`logs_day2ops_US._AllLogs`
WHERE
severity="ERROR"
AND json_payload IS NOT NULL
ORDER BY
1 DESC
LIMIT
50
Une fois la requête exécutée, le résultat qui s'affiche doit ressembler à l'exemple suivant :
Rechercher la latence minimum, maximum et moyenne
Vous pouvez afficher la latence minimum, maximum et moyenne dans un laps de temps donné pour le service frontend :
SELECT
hour,
MIN(took_ms) AS min,
MAX(took_ms) AS max,
AVG(took_ms) AS avg
FROM (
SELECT
FORMAT_TIMESTAMP("%H", timestamp) AS hour,
CAST( JSON_VALUE(json_payload,
'$."http.resp.took_ms"') AS INT64 ) AS took_ms
FROM
`logs_day2ops_US._AllLogs`
WHERE
timestamp > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 24 HOUR)
AND json_payload IS NOT NULL
AND SEARCH(labels,
"frontend")
AND JSON_VALUE(json_payload.message) = "request complete"
ORDER BY
took_ms DESC,
timestamp ASC )
GROUP BY
1
ORDER BY
1
Une fois la requête exécutée, le résultat qui s'affiche doit ressembler à l'exemple suivant :
Nombre de visites d'une page produit
Si vous souhaitez savoir combien de fois les utilisateurs ont consulté une page de produit spécifique au cours de l'heure écoulée, exécutez la requête suivante :
SELECT
count(*)
FROM
`logs_day2ops_US._AllLogs`
WHERE
text_payload like "GET %/product/L9ECAV7KIM %"
AND
timestamp > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR)
Une fois la requête exécutée, le résultat qui s'affiche doit ressembler à l'exemple suivant :
Sessions avec paiement du panier effectué
Exécutez la commande suivante pour afficher le nombre de sessions ayant fait l'objet d'un paiement du panier.
SELECT
JSON_VALUE(json_payload.session),
COUNT(*)
FROM
logs_day2ops_US._AllLogs
WHERE
JSON_VALUE(json_payload['http.req.method']) = "POST"
AND JSON_VALUE(json_payload['http.req.path']) = "/cart/checkout"
AND timestamp > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR)
GROUP BY
JSON_VALUE(json_payload.session)
Une fois la requête exécutée, le résultat qui s'affiche doit ressembler à l'exemple suivant :
Félicitations !
Vous venez de découvrir comment utiliser Cloud Logging pour obtenir des informations sur les applications qui s'exécutent dans GKE. Vous avez également créé et exécuté des requêtes à l'aide de l'analyse de journaux.
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 : 26 septembre 2022
Dernier test de l'atelier : 26 septembre 2022
Copyright 2025 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.