arrow_back

Traitement des données sans serveur avec Dataflow : surveillance, journalisation et création de rapports d'erreurs pour les jobs Dataflow

Accédez à plus de 700 ateliers et cours

Traitement des données sans serveur avec Dataflow : surveillance, journalisation et création de rapports d'erreurs pour les jobs Dataflow

Atelier 2 heures universal_currency_alt 5 crédits show_chart Avancé
info Cet atelier peut intégrer des outils d'IA pour vous accompagner dans votre apprentissage.
Accédez à plus de 700 ateliers et cours

Présentation

Au cours de cet atelier, vous allez :

  • créer une règle d'alerte ;
  • effectuer un dépannage simple des pipelines ;
  • découvrir comment fonctionnent les onglets "Diagnostic" et "Jobs BigQuery" ;
  • explorer la page "Error Reporting".

Prérequis

Connaître les bases de Python

Préparation

Pour chaque atelier, nous vous attribuons un nouveau projet Google Cloud et un nouvel ensemble de ressources pour une durée déterminée, sans frais.

  1. Connectez-vous à Qwiklabs dans une fenêtre de navigation privée.

  2. Vérifiez le temps imparti pour l'atelier (par exemple : 01:15:00) : vous devez pouvoir le terminer dans ce délai.
    Une fois l'atelier lancé, vous ne pouvez pas le mettre en pause. Si nécessaire, vous pourrez le redémarrer, mais vous devrez tout reprendre depuis le début.

  3. Lorsque vous êtes prêt, cliquez sur Démarrer l'atelier.

  4. Notez vos identifiants pour l'atelier (Nom d'utilisateur et Mot de passe). Ils vous serviront à vous connecter à Google Cloud Console.

  5. Cliquez sur Ouvrir la console Google.

  6. Cliquez sur Utiliser un autre compte, puis copiez-collez les identifiants de cet atelier lorsque vous y êtes invité.
    Si vous utilisez d'autres identifiants, des messages d'erreur s'afficheront ou des frais seront appliqués.

  7. Acceptez les conditions d'utilisation et ignorez la page concernant les ressources de récupération des données.

Activer Google Cloud Shell

Google 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.

Google Cloud Shell vous permet d'accéder à vos ressources Google Cloud grâce à une ligne de commande.

  1. Dans la barre d'outils située en haut à droite dans la console Cloud, cliquez sur le bouton "Ouvrir Cloud Shell".

    Icône Cloud Shell encadrée

  2. Cliquez sur Continuer.

Le provisionnement et la connexion à l'environnement prennent quelques instants. Une fois connecté, vous êtes en principe authentifié et le projet est défini sur votre ID_PROJET. Par exemple :

ID de projet mis en évidence dans le terminal Cloud Shell

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.

  • Vous pouvez lister les noms des comptes actifs à l'aide de cette commande :
gcloud auth list

Résultat :

Credentialed accounts: - @.com (active)

Exemple de résultat :

Credentialed accounts: - google1623327_student@qwiklabs.net
  • Vous pouvez lister les ID de projet à l'aide de cette commande :
gcloud config list project

Résultat :

[core] project =

Exemple de résultat :

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

Vérifier les autorisations du projet

Avant de commencer à travailler dans Google Cloud, vous devez vous assurer de disposer des autorisations adéquates pour votre projet dans IAM (Identity and Access Management).

  1. Dans la console Google Cloud, accédez au menu de navigation (Icône du menu de navigation), puis sélectionnez IAM et administration > IAM.

  2. Vérifiez que le compte de service Compute par défaut {project-number}-compute@developer.gserviceaccount.com existe et qu'il est associé au rôle editor (éditeur). Le préfixe du compte correspond au numéro du projet, disponible sur cette page : Menu de navigation > Présentation du cloud > Tableau de bord.

État de l'éditeur et nom du compte de service Compute Engine par défaut mis en évidence sur l'onglet "Autorisations"

Remarque : Si le compte n'est pas disponible dans IAM ou n'est pas associé au rôle editor (éditeur), procédez comme suit pour lui attribuer le rôle approprié.
  1. Dans la console Google Cloud, accédez au menu de navigation et cliquez sur Présentation du cloud > Tableau de bord.
  2. Copiez le numéro du projet (par exemple, 729328892908).
  3. Dans le menu de navigation, sélectionnez IAM et administration > IAM.
  4. Sous Afficher par compte principal, en haut de la table des rôles, cliquez sur Accorder l'accès.
  5. Dans le champ Nouveaux comptes principaux, saisissez :
{project-number}-compute@developer.gserviceaccount.com
  1. Remplacez {project-number} par le numéro de votre projet.
  2. Dans le champ Rôle, sélectionnez Projet (ou Basique) > Éditeur.
  3. Cliquez sur Enregistrer.

Tâche 1 : Créer un environnement virtuel et installer les dépendances

  1. Créez un environnement virtuel pour cet atelier :
sudo apt-get install -y python3-venv python3 -m venv df-env source df-env/bin/activate
  1. Installez ensuite les packages dont vous aurez besoin pour exécuter votre pipeline :
python3 -m pip install -q --upgrade pip setuptools wheel python3 -m pip install apache-beam[gcp]
  1. Enfin, vérifiez que l'API Dataflow est activée :
gcloud services enable dataflow.googleapis.com

Tâche 2 : Créer une règle d'alerte

Dans cette section, vous allez créer une règle d'alerte qui se déclenche lorsqu'une condition est remplie.

  1. Dans le champ Recherche de la barre de titre de la console Google Cloud, saisissez Monitoring, cliquez sur Recherche, puis sur Monitoring.

  2. Dans le volet de navigation de gauche, cliquez sur Alertes.

  3. Sur la page "Alertes", cliquez sur + Créer une règle.

  4. Cliquez sur le menu déroulant Sélectionner une métrique et décochez l'option Active.

    a. Saisissez Job Dataflow sous "Filtrer par nom de ressource ou de métrique", puis cliquez sur Job Dataflow > Job. Sélectionnez Échec, puis cliquez sur Appliquer.

    b. Définissez le champ Fenêtrage glissant sur sum.

    c. Cliquez sur Suivant. Indiquez 0 comme valeur du seuil.

  5. Cliquez sur le bouton Suivant pour passer à l'étape Configurer les notifications et finaliser l'alerte.

  6. Dans le formulaire qui s'affiche, cliquez sur le menu déroulant Canaux de notification, puis sur Gérer les canaux de notification.

Une fenêtre s'ouvre, affichant les types de canaux de notification disponibles.

  1. Faites défiler la page jusqu'à la ligne E-mail, puis cliquez sur Ajouter à droite.

    a. Dans le champ Adresse-e-mail, saisissez votre adresse e-mail personnelle.

    Remarque : L'adresse e-mail de votre compte participant Qwiklabs ne fonctionnera pas, car il s'agit d'un compte temporaire.

    b. Dans le champ Nom à afficher, saisissez Participant Qwiklabs.

    c. Cliquez sur Enregistrer. Vous pouvez maintenant fermer cette fenêtre et revenir à la fenêtre Créer une règle d'alerte précédente.

  2. Cliquez sur l'icône "Actualiser" à gauche de Gérer les canaux de notification.

  3. Ensuite, cliquez à nouveau sur le menu déroulant Canaux de notification. Cette fois, vous devriez voir le nom du compte participant que vous venez d'ajouter.

  4. Cochez la case à gauche du nom Participant Qwiklabs et cliquez sur OK.

  5. Saisissez Job Dataflow en échec comme Nom de l'alerte dans la zone de texte.

  6. Cliquez à nouveau sur Suivant.

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

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

Tâche 3 : Échec au démarrage du pipeline sur Dataflow

  1. Examinez le code de votre pipeline :
import argparse import logging import argparse, logging, os import apache_beam as beam from apache_beam.io import WriteToText from apache_beam.options.pipeline_options import PipelineOptions class ReadGBK(beam.DoFn): def process(self, e): k, elems = e for v in elems: logging.info(f"the element is {v}") yield v def run(argv=None): parser = argparse.ArgumentParser() parser.add_argument( '--output', dest='output', help='Output file to write results to.') known_args, pipeline_args = parser.parse_known_args(argv) read_query = """( SELECT version, block_hash, block_number FROM `bugquery-public-data.crypto_bitcoin.transactions` WHERE version = 1 LIMIT 1000000 ) UNION ALL ( SELECT version, block_hash, block_number FROM `bigquery-public-data.crypto_bitcoin.transactions` WHERE version = 2 LIMIT 1000 ) ;""" p = beam.Pipeline(options=PipelineOptions(pipeline_args)) (p | 'Read from BigQuery' >> beam.io.ReadFromBigQuery(query=read_query, use_standard_sql=True) | "Add Hotkey" >> beam.Map(lambda elem: (elem["version"], elem)) | "Groupby" >> beam.GroupByKey() | 'Print' >> beam.ParDo(ReadGBK()) | 'Sink' >> WriteToText(known_args.output)) result = p.run() if __name__ == '__main__': logger = logging.getLogger().setLevel(logging.INFO) run()
  1. Dans Cloud Shell, ouvrez un nouveau fichier nommé my_pipeline.py. Copiez le code ci-dessus et collez-le dans ce fichier. Enregistrez-le à l'aide de l'éditeur de texte de votre choix (l'exemple ci-dessous utilise Vim) :
vi my_pipeline.py
  1. Après avoir collé le code, n'oubliez pas d'enregistrer votre fichier.

  2. Exécutez la commande ci-dessous pour créer un bucket de stockage :

export PROJECT_ID=$(gcloud config get-value project) gcloud storage buckets create gs://$PROJECT_ID --location=US
  1. Ensuite, vous allez essayer de lancer le pipeline à l'aide de la commande ci-dessous (notez que la commande va échouer) :
# Attempt to launch the pipeline python3 my_pipeline.py \ --project=${PROJECT_ID} \ --region={{{project_0.default_region | Region}}} \ --tempLocation=gs://$PROJECT_ID/temp/ \ --runner=DataflowRunner

La commande ci-dessus permettant de lancer le pipeline échoue et affiche une trace de pile semblable à celle de la capture d'écran ci-dessous :

Sortie de la trace dans le terminal de ligne de commande

Cet échec provient de Beam. Dans le code, nous spécifions WriteToText(known_args.output). Comme nous n'avons pas fourni l'option --output, le code n'a pas passé la validation Beam et n'a pas pu être lancé dans Dataflow. Comme cette opération n'a pas atteint Dataflow, aucun ID de job n'y est associé. Vous ne devriez donc pas recevoir d'e-mail d'alerte.

Cliquez sur Vérifier ma progression pour valider l'objectif. Échec au démarrage du pipeline sur Dataflow

Tâche 4 : Table BigQuery invalide

Dans cette section, vous allez essayer de relancer le pipeline en indiquant l'option --output requise. Bien que cela permette de lancer le pipeline Dataflow, le job échouera au bout de quelques minutes, car nous avons intentionnellement ajouté une table BigQuery invalide. Cela devrait déclencher la règle d'alerte et entraîner l'envoi d'un e-mail d'alerte.

  1. Dans le terminal, exécutez la commande suivante pour lancer le pipeline :
# Launch the pipeline python3 my_pipeline.py \ --project=${PROJECT_ID} \ --region={{{project_0.default_region | Region}}} \ --output gs://$PROJECT_ID/results/prefix \ --tempLocation=gs://$PROJECT_ID/temp/ \ --max_num_workers=5 \ --runner=DataflowRunner
  1. Dans la barre de titre de la console Google Cloud, saisissez Dataflow dans le champ Recherche, cliquez sur Recherche, puis sur Dataflow.

  2. Cliquez sur Jobs.

  3. Cliquez sur le job Dataflow listé sur la page.

Si vous attendez environ quatre minutes, vous verrez que le job échoue. Cela déclenche la règle d'alerte. Vous pouvez consulter votre boîte de réception pour voir l'e-mail d'alerte.

  1. Sous le graphe du pipeline Dataflow, vous trouverez le panneau Journaux. Cliquez sur Afficher. Les onglets Journaux des jobs, Journaux des nœuds de calcul, Diagnostic, Jobs BigQuery et Échantillonnage de données s'affichent.

  2. Cliquez sur l'onglet Journaux des jobs et examinez les entrées de journal.

  3. Ensuite, cliquez sur l'onglet Journaux des nœuds de calcul et examinez ces journaux.

Onglet "Journaux des jobs" affichant 19 messages

Remarque : Vous constaterez que vous pouvez développer les journaux en cliquant dessus. Les journaux qui se répètent peuvent apparaître dans l'onglet Diagnostic.
  1. Lorsque vous cliquez sur l'onglet Diagnostic, un lien cliquable s'affiche.

  2. Cliquez sur ce lien pour accéder à la page "Error Reporting". Cette page fournit une vue détaillée de l'erreur. En examinant la trace de la pile, vous pouvez constater le problème : une faute de frappe dans le code du pipeline !

Lignes de code dans l'onglet "Analysé"

Dans le code, bigquery est intentionnellement mal orthographié en bugquery. Cela fait échouer le job Dataflow et déclenche la règle d'alerte, qui envoie un e-mail. Dans la section suivante, vous allez corriger le code et relancer le pipeline.

Cliquez sur Vérifier ma progression pour valider l'objectif. Table BigQuery invalide

Tâche 5 : Journalisation excessive

  1. À l'aide d'un éditeur de texte (tel que Vim), ouvrez le fichier my_pipeline.py et corrigez le code en remplaçant bugquery par bigquery.

    Remarque : Dans le code, bugquery apparaît dans l'instruction SELECT sous la forme bugquery-public-data.crypto_bitcoin.transactions. Remplacez-le par bigquery-public-data.crypto_bitcoin.transactions.
  2. Dans le terminal, exécutez la commande suivante pour lancer le pipeline :

# Launch the pipeline python3 my_pipeline.py \ --project=${PROJECT_ID} \ --region={{{project_0.default_region | Region}}} \ --output gs://$PROJECT_ID/results/prefix \ --tempLocation=gs://$PROJECT_ID/temp/ \ --max_num_workers=5 \ --runner=DataflowRunner

L'exécution du pipeline va prendre environ sept minutes.

  1. Dans la barre de titre de la console Google Cloud, saisissez Dataflow dans le champ Recherche, cliquez sur Recherche, puis sur Dataflow.

  2. Cliquez sur Jobs. Lorsque vous cliquez sur ce nouveau job, vous devriez voir, tout à droite de la page du graphe du job, que l'état du job est réussi. Si le job n'est pas terminé, veuillez patienter jusqu'à ce qu'il se termine avec succès.

  3. Développez la section Journaux en bas de la page et examinez les journaux dans l'onglet Journaux des nœuds de calcul.

Dans l'onglet Journaux des nœuds de calcul, vous verrez des entrées de journal au format the element is {'version' : ....... }, comme illustré dans la capture d'écran ci-dessous :

Onglet "Journaux des nœuds de calcul" affichant 350 messages

Ces entrées sont générées par la ligne suivante dans le code du pipeline :

logging.info(f"the element is {v}")
  1. Cliquez sur l'onglet Diagnostic. Un message concernant la limitation des journaux s'affiche.

L'onglet "Diagnostic" affichant un message d'erreur

  1. Cliquez dessus pour accéder à la page Error Reporting. Un avertissement lié à l'exécution du job signale une journalisation excessive et fournit un lien vers un document public expliquant le problème.

Pour résoudre ce problème, il vous suffit de supprimer la ligne de journalisation dans votre code de pipeline et de réexécuter le pipeline Dataflow. Une fois l'opération terminée, ce message ne devrait plus s'afficher dans l'onglet Diagnostic.

Remarque : Vous n'avez pas besoin de réexécuter ce pipeline pour terminer cet atelier.
  1. Revenez à la page "Jobs Dataflow" en cliquant sur le bouton "Retour" de votre navigateur.

  2. Dans le panneau des journaux développé, cliquez sur l'onglet Jobs BigQuery. Dans le menu déroulant Emplacement des données, sélectionnez "us (plusieurs régions aux États-Unis)", puis cliquez sur Charger les jobs BigQuery. Cliquez ensuite sur Confirmer.

Onglet "Jobs BigQuery"

Vous verrez deux jobs qui faisaient partie du pipeline.

  1. Cliquez sur Ligne de commande tout à droite du premier job, puis sur Exécuter dans Cloud Shell dans le pop-up.

La commande sera collée dans Cloud Shell. Veillez à exécuter la commande.

  1. Le résultat de la commande indique les emplacements des fichiers utilisés pour lire/écrire dans BigQuery, leur taille et la durée d'exécution du job. Si un job BigQuery a échoué, c'est ici que vous pourrez en identifier la cause.

Le résultat

Cliquez sur Vérifier ma progression pour valider l'objectif. Journalisation excessive

Terminer l'atelier

Une fois l'atelier terminé, cliquez sur Terminer l'atelier. Google Cloud Skills Boost supprime les ressources que vous avez utilisées, puis efface le compte.

Si vous le souhaitez, vous pouvez noter l'atelier. Sélectionnez un nombre d'étoiles, saisissez un commentaire, puis cliquez sur Envoyer.

Le nombre d'étoiles correspond à votre degré de satisfaction :

  • 1 étoile = très insatisfait(e)
  • 2 étoiles = insatisfait(e)
  • 3 étoiles = ni insatisfait(e), ni satisfait(e)
  • 4 étoiles = satisfait(e)
  • 5 étoiles = très satisfait(e)

Si vous ne souhaitez pas donner votre avis, vous pouvez fermer la boîte de dialogue.

Pour soumettre des commentaires, suggestions ou corrections, veuillez accéder à l'onglet Assistance.

Copyright 2025 Google LLC Tous droits réservés. Google et le logo Google sont des marques de Google LLC. Tous les autres noms de société et de produit peuvent être des marques des sociétés auxquelles ils sont associés.

Avant de commencer

  1. Les ateliers créent un projet Google Cloud et des ressources pour une durée déterminée.
  2. Les ateliers doivent être effectués dans le délai imparti et ne peuvent pas être mis en pause. Si vous quittez l'atelier, vous devrez le recommencer depuis le début.
  3. En haut à gauche de l'écran, cliquez sur Démarrer l'atelier pour commencer.

Utilisez la navigation privée

  1. Copiez le nom d'utilisateur et le mot de passe fournis pour l'atelier
  2. Cliquez sur Ouvrir la console en navigation privée

Connectez-vous à la console

  1. Connectez-vous à l'aide des identifiants qui vous ont été attribués pour l'atelier. L'utilisation d'autres identifiants peut entraîner des erreurs ou des frais.
  2. Acceptez les conditions d'utilisation et ignorez la page concernant les ressources de récupération des données.
  3. Ne cliquez pas sur Terminer l'atelier, à moins que vous n'ayez terminé l'atelier ou que vous ne vouliez le recommencer, car cela effacera votre travail et supprimera le projet.

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

Un atelier à la fois

Confirmez pour mettre fin à tous les ateliers existants et démarrer celui-ci

Utilisez la navigation privée pour effectuer l'atelier

Ouvrez une fenêtre de navigateur en mode 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.