Démarrage rapide avec Python

Dans ce guide de démarrage rapide, vous allez exécuter des programmes Python pour écrire, lire, supprimer et exporter des entrées de journal.

Avant de commencer

Vous devez avoir un projet Google Cloud Platform avec la facturation activée pour effectuer ce démarrage rapide. Si vous n'avez pas de projet GCP ou si la facturation n'est pas activée pour votre projet, procédez comme suit :
  1. Connectez-vous à votre compte Google.

    Si vous n'en possédez pas déjà un, vous devez en créer un.

  2. Sélectionnez ou créez un projet Google Cloud Platform.

    Accéder à la page "Gérer les ressources"

  3. Assurez-vous que la facturation est activée pour votre projet Google Cloud Platform.

    Découvrir comment activer la facturation

Ce guide de démarrage rapide fait appel à Stackdriver Logging et à Cloud Storage. L'utilisation de ces ressources peut entraîner des coûts. Une fois que vous avez terminé ce guide de démarrage rapide, vous pouvez éviter de continuer à payer des frais en supprimant les ressources que vous avez créées. Pour en savoir, plus, consultez la section Effectuer un nettoyage.

Premiers pas

Vous pouvez utiliser l'environnement Cloud Shell ou un environnement Linux générique pour suivre ce guide de démarrage rapide.

Cloud Shell

  1. Les versions 2.7 et 3.5 de Python sont pré-installées dans Cloud Shell. Vous n'avez pas besoin d'installer ni de configurer un autre logiciel.

  2. Ouvrez Cloud Shell et vérifiez la configuration de votre projet :

    1. Dans la console GCP, cliquez sur le bouton Activer Cloud Shell dans l'angle supérieur droit :

      Activer Cloud Shell

      Cloud Shell s'ouvre dans une fenêtre et affiche une bannière de bienvenue :

      Bienvenue dans Cloud Shell !

    2. Le message de bienvenue reflète l'ID du projet configuré. S'il ne s'agit pas du projet que vous souhaitez utiliser, exécutez la commande suivante en remplaçant [PROJECT_ID] par votre ID de projet :

       gcloud config set project [PROJECT_ID]
      

Linux

  1. Installez et configurez Python. Vous pouvez utiliser les versions 2 ou 3 de Python pour suivre ce guide de démarrage rapide. Pour plus d'informations, consultez la page Configurer un environnement de développement Python.

  2. Configurez les autorisations Cloud Identity and Access Management pour votre projet. Dans les étapes suivantes, vous allez créer un compte de service pour votre projet, puis générer et télécharger un fichier sur votre poste de travail Linux.

    1. Dans la console GCP, accédez à la page IAM et administration > Comptes de service :

      Accéder à la page "Comptes de service"

    2. Sélectionnez le projet de démarrage rapide, puis cliquez sur Créer un compte de service :

      • Saisissez un nom pour le compte.
      • Saisissez une description pour le compte.
      • Cliquez sur Créer.
    3. Dans le volet Autorisations associées au compte de service (facultatif), sous Rôle, sélectionnez Administrateur Logging dans la liste déroulante. Cliquez sur Continuer.

    4. Ignorez l'option permettant d'accorder aux utilisateurs l'accès au compte de service.

    5. Créez un fichier de clé et téléchargez-le sur votre poste de travail :

      • Dans le volet Créer une clé (facultatif), cliquez sur Créer une clé.
      • Pour le type de clé, sélectionnez JSON, puis cliquez sur Créer. Après quelques instants, une fenêtre pop-up affiche un message semblable à celui-ci :

        Clé privée enregistrée

    6. Pour terminer la création de votre compte de service, cliquez sur Terminé.

  3. Sur votre poste de travail Linux, fournissez les identifiants d'authentification à votre application en définissant la variable d'environnement GOOGLE_APPLICATION_CREDENTIALS sur le chemin d'accès au fichier de clé. Exemple :

     export GOOGLE_APPLICATION_CREDENTIALS="/home/user/Downloads/[FILE_NAME].json"
    

    Cette variable ne s'applique qu'à la session d'interface système actuelle. Par conséquent, si vous ouvrez une nouvelle session, vous devez la définir à nouveau.

Cloner la source

Clonez le projet GitHub python-docs-samples :

git clone https://github.com/GoogleCloudPlatform/python-docs-samples

Le répertoire python-docs-samples/logging/cloud-client contient les deux programmes utilisés dans ce guide de démarrage rapide :

  • snippets.py vous permet de gérer les entrées dans un journal.
  • export.py vous permet de gérer les exportations de journaux.

Pour accéder au répertoire du programme, exécutez la commande suivante :

cd python-docs-samples/logging/cloud-client

Écrire des entrées de journal

Le programme snippets.py utilise les bibliothèques clientes Python pour écrire des entrées de journal dans Logging. Lorsque l'option write est spécifiée sur la ligne de commande, le programme écrit les entrées de journal suivantes :

  • Une entrée avec des données non structurées et aucun niveau de gravité spécifié
  • Une entrée avec des données non structurées et le niveau de gravité ERROR
  • Une entrée avec des données structurées JSON et aucun niveau de gravité spécifié

Pour écrire de nouvelles entrées dans le journal my-log, exécutez le programme snippets.py avec l'option write :

python snippets.py my-log write

Afficher les entrées de journal

Pour afficher les entrées de journal dans Cloud Shell, exécutez le programme snippets.py avec l'option list :

python snippets.py my-log list

Après quelques instants, la commande se termine et un résultat semblable aux lignes suivantes s'affiche :

    Listing entries for logger my-log:
    * 2018-11-15T16:05:35.548471+00:00: Hello, world!
    * 2018-11-15T16:05:35.647190+00:00: Goodbye, world!
    * 2018-11-15T16:05:35.726315+00:00: {u'favorite_color': u'Blue', u'quest': u'Find the Holy Grail', u'name': u'King Arthur'}

Si le résultat n'indique aucune entrée, relancez la commande. La réception et le traitement des entrées de journal par Logging peuvent prendre quelques instants.

Vous pouvez également afficher les entrées de journal à l'aide de la visionneuse de journaux. Pour en savoir plus, consultez la section Afficher les journaux dans la visionneuse de journaux.

Supprimer des entrées de journal

Pour supprimer toutes les entrées du journal my-list, exécutez le programme snippets.py avec l'option delete :

python snippets.py my-log delete

Après quelques instants, la commande se termine et le résultat suivant s'affiche :

Deleted all logging entries for my-log.

Exporter des journaux

Logging peut exporter des entrées de journal vers des buckets Cloud Storage, des ensembles de données BigQuery et Cloud Pub/Sub. Pour plus d'informations sur l'exportation, consultez la page Présentation des exportations de journaux.

Dans cette section, vous allez exécuter les opérations suivantes :

  • Créer un bucket Cloud Storage en tant que destination des données
  • Créer un récepteur qui copie les nouvelles entrées de journal dans la destination
  • Mettre à jour les autorisations du bucket Cloud Storage
  • Écrire des entrées de journal dans Logging
  • Si nécessaire, vérifier les contenus du bucket Cloud Storage

Créer une destination

Dans ce guide de démarrage rapide, la destination des exportations est un bucket Cloud Storage. Pour créer un bucket Cloud Storage :

  1. Dans la console GCP, accédez à Stockage > Navigateur :

    Accéder à la page du navigateur

  2. Cliquez sur Créer un bucket.

  3. Sélectionnez un nom pour le bucket.

  4. Sélectionnez Régional, puis choisissez la zone géographique la plus proche pour le champ Emplacement.

  5. Pour le paramètre Modèle de contrôle des accès, sélectionnez Définir des autorisations au niveau de l'objet et du bucket.

  6. Conservez la valeur par défaut de tous les autres paramètres. Cliquez sur Créer.

Ce guide de démarrage rapide utilise le nom de bucket Cloud Storage myloggingproject-1.

Créer un récepteur

Un récepteur est une règle qui détermine si une entrée de journal nouvellement arrivée doit être exportée depuis Logging vers une destination. Il est doté de trois attributs :

  • Nom
  • Destination
  • Filtre

Si une entrée de journal nouvellement arrivée remplit les conditions de filtre, elle est exportée vers la destination.

Le programme export.py utilise les bibliothèques clientes Python pour créer, répertorier, modifier et supprimer des récepteurs. Pour créer le récepteur mysink qui exporte toutes les entrées de journal ayant au minimum la gravité INFO dans le bucket Cloud Storage myloggingproject-1, exécutez la commande suivante :

python export.py create mysink myloggingproject-1 "severity>=INFO"

Pour afficher vos récepteurs, exécutez le programme export.py avec l'option list :

python export.py list

Le résultat ressemble à ceci :

    mysink: severity>=INFO -> storage.googleapis.com/myloggingproject-1

Mettre à jour les autorisations de la destination

Les autorisations de la destination, ici votre bucket Cloud Storage, ne sont pas modifiées lorsque vous créez un récepteur à l'aide du programme export.py. Vous devez modifier les paramètres d'autorisation du bucket Cloud Storage pour accorder une autorisation en écriture au récepteur.

Pour mettre à jour les autorisations du bucket Cloud Storage :

  1. Identifiez l'identité du rédacteur des récepteurs :

    1. Accédez à la page Visionneuse de journaux :

      Accéder à la page de la visionneuse de journaux

    2. Sélectionnez Exportations pour afficher un résumé des récepteurs, y compris l'identité du rédacteur.

  2. Dans la console GCP, cliquez sur Stockage > Navigateur :

    Accéder à la page du navigateur

  3. Pour afficher la vue détaillée, cliquez sur le nom de votre bucket.

  4. Sélectionnez Autorisations, puis cliquez sur Ajouter des membres.

  5. Définissez le paramètre Rôle sur Storage Object Creator, puis saisissez l'identité du rédacteur des récepteurs.

Pour en savoir plus, consultez la section Autorisations des destinations.

Valider le récepteur

Pour confirmer que le récepteur et la destination sont correctement configurés, procédez comme suit :

  1. Écrivez de nouvelles entrées dans le journal my-log :

    python snippets.py my-log write
    
  2. Affichez les contenus du bucket Cloud Storage :

    1. Dans la console GCP, cliquez sur Stockage > Navigateur :

      Accéder à la page du navigateur

    2. Pour afficher la vue détaillée, cliquez sur le nom de votre bucket. Celle-ci répertorie les dossiers contenant des données. Si le bucket ne comporte aucune donnée, le message suivant s'affiche :

      There are no live objects in this bucket.

      Comme indiqué dans la section Disponibilité des journaux exportés, deux à trois heures peuvent s'écouler avant que les premières entrées ne s'affichent dans la destination ou que vous ne soyez averti d'une erreur de configuration.

    3. Une fois que le bucket a reçu les données, la vue détaillée affiche un résultat de ce type :

      Contenus du bucket

    4. Les données de chaque dossier sont organisées en une série de dossiers, dotés d'une étiquette indiquant le dossier racine constitué d'un nom de journal, puis successivement, de l'année, du mois et du jour. Pour afficher les données exportées par le récepteur, cliquez sur le nom de dossier my-logs, puis continuez à cliquer sur les sous-dossiers de l'année, du mois et du jour jusqu'à atteindre un fichier finissant par json :

      Contenus du bucket

    5. Le fichier JSON contient les entrées de journal exportées vers le bucket Cloud Storage. Cliquez sur le nom du fichier JSON pour afficher son contenu qui devrait ressembler à ceci :

       {"insertId":"yf1cshfoivz48",
       "logName":"projects/loggingproject-222616/logs/my-log",
       "receiveTimestamp":"2018-11-15T23:06:14.738729911Z",
       "resource":{"labels":{"project_id":"loggingproject-222616"},"type":"global"},
       "severity":"ERROR",
       "textPayload":"Goodbye, world!",
       "timestamp":"2018-11-15T23:06:14.738729911Z"}
      

      Comme le niveau de gravité ERROR est supérieur au niveau de gravité INFO, l'entrée de journal contenant la chaîne "Goodbye, world!" est exportée vers la destination du récepteur. Les autres entrées de journal écrites ne sont pas exportées vers la destination, car leur niveau de gravité a été défini sur la valeur par défaut, qui est inférieure à INFO.

Dépannage

Un bucket Cloud Storage peut être vide pour plusieurs raisons :

  • Vous n'avez pas attendu assez longtemps pour que les données apparaissent dans le bucket. Deux à trois heures peuvent s'écouler avant que les premières entrées ne s'affichent dans la destination ou que vous ne soyez averti d'une erreur de configuration. Pour en savoir plus, consultez la section Disponibilité des journaux exportés.

  • Il y a une erreur de configuration. Dans ce cas, vous recevez un e-mail dont l'objet est semblable au texte suivant :

     [ACTION REQUIRED] Stackdriver Logging export config error in myloggingproject.

    Le problème de configuration est décrit dans le corps de l'e-mail. Par exemple, si vous n'avez pas mis à jour vos autorisations de destination, le code d'erreur suivant est répertorié :

     bucket_permission_denied

    Pour résoudre ce problème particulier, consultez la section Mettre à jour les autorisations.

  • Vous n'avez pas écrit d'entrées de journal après avoir créé le récepteur. Celui-ci ne s'applique qu'aux entrées de journal nouvellement arrivées. Pour remédier à cette situation, écrivez de nouvelles entrées de journal :

     python snippets.py my-log write
    

Effectuer un nettoyage

Afin d'éviter que des frais ne soient facturés sur votre compte GCP pour les ressources utilisées dans ce démarrage rapide, procédez comme suit :

  1. (Facultatif) Supprimez les entrées de journal que vous avez créées. Si vous ne les supprimez pas, elles expireront et seront supprimées. Reportez-vous aux règles relatives aux quotas. Pour supprimer toutes les entrées du journal my-log, exécutez la commande suivante :

     python snippets.py my-log delete
    
  2. Supprimez votre projet ou vos ressources de démarrage rapide.

    • Pour supprimer le projet, dans le volet Informations sur le projet de la console GCP, cliquez sur Accéder aux paramètres du projet, puis sur Arrêter.

    • Pour supprimer les ressources de démarrage rapide :

      1. Supprimez le récepteur à l'aide de la commande suivante :

        python export.py delete mysink
        
      2. Supprimez le bucket Cloud Storage. Accédez à la console GCP, puis cliquez sur Stockage > Navigateur. Cochez la case à côté du nom du bucket, puis cliquez sur Supprimer.

Étapes suivantes

  • Consultez la section Comptes de service pour plus d'informations sur les comptes de service, les champs d'application de l'accès et les rôles Cloud Identity and Access Management.
  • Pour plus d'informations sur la visionneuse de journaux, consultez la page relative à la visionneuse de journaux.
  • Consultez la section Exporter des journaux pour savoir comment exporter vos entrées de journal vers Cloud Storage, BigQuery et Cloud Pub/Sub.
  • Pour savoir comment collecter des entrées de journal à partir de vos instances de machine virtuelle dans Stackdriver Logging, consultez la page Agent Logging.
  • Consultez la page Journaux d'audit pour connaître vos besoins en matière d'audit et de conformité.
  • Pour savoir comment lire, écrire et configurer des journaux à partir de vos applications, consultez la page API Stackdriver Logging.
Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Stackdriver Logging
Besoin d'aide ? Consultez notre page d'assistance.