Ce tutoriel explique comment utiliser Cloud Logging à la place d'un serveur de journalisation afin d'effectuer une journalisation spécifique à une application. Par défaut, Cloud Logging regroupe les journaux du système et de nombreuses applications courantes. Le tutoriel explique également comment obtenir des journaux dans Cloud Logging à partir de workflows personnalisés ou d'applications qui ne figurent pas dans la liste des applications courantes.
Les nœuds de calcul à courte durée de vie sont fréquents dans de nombreuses charges de travail de calcul, comme les pipelines de rendu d'effets visuels (VFX) et les systèmes de compilation. Ce tutoriel se concentre sur les charges de travail VFX et prend pour exemple le moteur de rendu VFX autonome V-Ray. Dans un cas d'utilisation classique, des instances de VM sont créées à la demande par un système de mise en file d'attente, se voient attribuer une tâche (telle qu'une ou plusieurs images à afficher) et s'arrêtent une fois la tâche terminée. Vous devez capturer les journaux générés non seulement par le processus de rendu, mais également par les tâches effectuées par l'instance avant ou après le rendu, telles que la conversion de fichiers ou la copie d'images affichées en local dans un espace de stockage commun.
Objectifs
- Créer une instance et installer l'agent Cloud Logging sur celle-ci
- Configurer votre application ou votre workflow personnalisé pour envoyer des journaux à l'agent Cloud Logging
- Utiliser la bibliothèque cliente Python pour envoyer des journaux directement à Logging
- Afficher, filtrer et rechercher des journaux dans Logging
- Exporter des journaux depuis Logging vers un espace de stockage accessible à long terme
Coûts
Ce tutoriel utilise les composants facturables suivants de Google Cloud :
- Compute Engine
Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût. Les nouveaux utilisateurs de Google Cloud peuvent bénéficier d'un essai gratuit.
Consultez la page Tarifs de Logging pour comprendre les coûts liés à l'utilisation de Cloud Logging dans le cadre de ce tutoriel.
Avant de commencer
-
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.
- Activez l'API Compute Engine.
Installez le composant de commandes
gcloud beta
:gcloud components install beta
Définissez votre projet par défaut afin de ne pas avoir à fournir l'option
--project
dans chaque commande :gcloud config set project PROJECT_ID
Créer une instance Compute Engine
L'agent Cloud Logging fonctionne sur les instances de machines virtuelles (VM) Compute Engine et les instances de VM Amazon Elastic Compute Cloud (Amazon EC2). Pour en savoir plus sur l'agent et sur les instances de VM compatibles, consultez la page Agent Logging dans la documentation du produit.
Pour les besoins de ce tutoriel, vous pouvez créer une instance avec un type de VM par défaut. En production, toutefois, vous devez décider de la puissance de calcul requise par votre application et choisir une VM en conséquence.
- Dans Cloud Console, accédez à la page Instances de VM.
- Cliquez sur Créer une instance.
- Sur la page Créer une instance, renseignez les propriétés de votre instance. Pour afficher les options de configuration avancées, développez la section Gestion, sécurité, disques, réseau et location unique.
- Cliquez sur Créer pour créer l'instance.
La création de l'instance prend quelques instants. Dans ce tutoriel, l'instance de VM est nommée sd-tutorial
.
Configurer l'instance Compute Engine
Une fois que vous avez créé l'instance de VM à l'aide d'un compte disposant d'autorisations de super-utilisateur, procédez comme suit :
Utilisez SSH pour vous connecter à l'instance
sd-tutorial
.gcloud compute ssh sd-tutorial
Installez l'agent Cloud Logging. Pour obtenir des instructions détaillées, consultez la page Installer l'agent Cloud Logging.
Téléchargez et installez
pip
:sudo yum install python-pip
Téléchargez et installez la bibliothèque Python Cloud Logging :
pip install --user --upgrade google-cloud-logging
Créez le fichier de configuration de l'agent Cloud Logging pour V-Ray à l'emplacement
/etc/google-fluentd/config.d/vray.conf
avec le contenu suivant :<source> @type tail read_from_head true format /^(\[(?<time>.*?)\])?((?<severity> ?(debug|info|warning|error|critical)): )?(?<message>.*)$/ time_format %Y/%b/%d|%H:%M:%S # Log file names must be of the format SH.SEQ.SHOT.ROLE.log. # For example: myfilm.fba.0050.render.log path /home/*/vray/logs/*.log pos_file /var/lib/google-fluentd/pos/vray.pos tag vray.* </source> <filter vray.**> @type record_transformer <record> # Parse the log file name and add additional key:value records # to aid in filtering and searching logs in Logging. # Assumes you are following the convention in this tutorial. show ${tag_parts[-5]} seq ${tag_parts[-4]} shot ${tag_parts[-3]} role ${tag_parts[-2]} tag ${tag_suffix[1]} # Strip off the "vray." prefix. </record> </filter>
Pour en savoir plus sur la configuration de
fluentd
, consultez la page Config File Syntax.Actualisez la configuration de l'agent Cloud Logging :
sudo service google-fluentd reload
Dans un système de production, vous pouvez ensuite transformer cette VM configurée en image de VM personnalisée que votre pipeline pourrait démarrer à la demande.
Informations spécifiques aux effets visuels
Chaque package logiciel de rendu génère sa propre sortie de journal. Bien que ce tutoriel utilise le moteur de rendu autonome V-Ray, vous pouvez l'adapter à d'autres moteurs de rendu ou applications avec stdout/stderr
en sortie. Le tutoriel utilise une configuration fluentd
généralisée et implique que votre système de mise en file d'attente redirige la sortie du moteur de rendu vers un nom de fichier ayant un format spécifique et adapté pour la recherche. Si vous exécutez plusieurs tâches sur une même VM, vous devez vous assurer que les noms de fichiers sont uniques.
Nommer les fichiers journaux dans Logging
Lorsque vous définissez la convention de nommage de vos journaux Logging, suivez les bonnes pratiques concernant les conventions de nommage propres à votre studio. Logging peut effectuer une recherche sur plusieurs ressources. Par conséquent, l'utilisation d'une convention de nommage cohérente vous permet de rechercher des journaux générés à partir de différentes ressources dont les tags comportent des données identiques ou similaires. Dans ce tutoriel, le gestionnaire de files d'attente renseigne les valeurs suivantes dans des variables d'environnement avant de lancer le processus du nœud de calcul du rendu. Elles sont ensuite utilisées en tant que tags pour les journaux et pour générer un nom de fichier unique :
fieldName | Variable d'environnement | Valeur |
Nom de la production (du projet) | SHOW |
myfilm |
Nom de la séquence | SEQ |
fba |
Numéro de plan | SHOT |
0050 |
Rôle | ROLE |
render |
Dans cet exemple, les valeurs sont assemblées dans une convention de nommage classique pour des workflows relatifs aux effets visuels :
<SHOW>.<SEQ>.<SHOT>.<ROLE>.log
Par exemple, les journaux de rendu du plan fba0050
présenteraient le tag suivant :
myfilm.fba.0050.render.log
Dans ce tutoriel, on s'attend à ce que le gestionnaire de files d'attente définisse le nom des fichiers journaux conformément à cette convention, mais vous pouvez facilement la modifier en fonction des besoins de votre studio.
Tester manuellement la configuration de Logging
Pour vérifier votre configuration sans utiliser de moteur de rendu ni de gestionnaire de files d'attente, copiez un exemple d'entrée de journal dans un journal de test. Depuis votre répertoire d'accueil, saisissez les commandes suivantes :
mkdir -p vray/logs/
export SHOW='testshow' SEQ='testseq' SHOT='testshot' ROLE='testrole'
echo "debug: Test log line at `date` from ${HOSTNAME}" >> vray/logs/${SHOW}.${SEQ}.${SHOT}.${ROLE}.log
Cette ligne devrait apparaître rapidement dans la visionneuse de journaux.
Vérifier la diffusion des journaux
Dans Cloud Console, accédez à la page Visionneuse de journaux.
Accéder à la page Visionneuse de journaux
Dans le menu Journaux, vous devriez voir une entrée avec un tag comportant le nom du journal que vous avez créé (dans le cas présent,
testshow.testseq.testshot.testrole
).Consultez ce journal pour voir votre sortie :
Vous pouvez également lire les journaux à l'aide de la commande bêta de l'outil
gcloud
, en remplaçant[project-id]
et[log-name]
selon le cas :# List all logs. gcloud beta logging logs list # Read the contents of a specific log. gcloud beta logging read projects/[project-id]/logs/[log-name]
Pour plus d'informations sur la journalisation à l'aide de l'outil de ligne de commande gcloud
, consultez la documentation sur la lecture des entrées de journal.
Envoyer des journaux à Logging à partir d'un processus de rendu
Une fois la configuration correctement configurée et vérifiée, vous pouvez envoyer des journaux à Logging à l'aide d'une ligne de commande autonome V-Ray semblable à celle indiquée ci-dessous.
Dans cet exemple, les options de ligne de commande lancent le processus V-Ray et produisent un résultat optimisé pour la redirection vers un fichier. Le gestionnaire de files d'attente doit remplacer SCENE_FILE
par le chemin d'accès au fichier local approprié. Il doit également renseigner les quatre variables d'environnement (SHOW
, SEQ
, SHOT
et ROLE
) permettant de générer le nom du journal, comme décrit dans la section Nommer les fichiers journaux.
vray \
-display=0 \
-showProgress=0 \
-progressUseCR=0 \
-progressUseColor=0 \
-sceneFile SCENE_FILE > vray/logs/${SHOW}.${SEQ}.${SHOT}.${ROLE}.log 2>&1
Envoyer des journaux directement à l'API Cloud Logging
La plupart des pipelines VFX utilisent un langage de script pour effectuer automatiquement certaines tâches, telles que la préparation d'éléments, la publication, le transfert de données, le rendu ou le transcodage. Vous pouvez consigner le résultat de ces tâches dans Logging à l'aide d'une bibliothèque cliente. Ce tutoriel utilise Python du fait de sa large utilisation dans le secteur des effets visuels.
Vous pouvez envoyer des journaux à Logging à partir de postes de travail sur site ou dans le cloud. Vous n'installez pas l'agent Logging pour écrire des journaux de cette manière, car vous communiquez avec Logging via son API Python.
Écrire un journal sur Cloud Logging à l'aide de la bibliothèque Python
Pour écrire un journal dans Cloud Logging à l'aide d'un script Python, vous devez d'abord effectuer les opérations suivantes :
- Compiler les métadonnées du journal
- Indiquer le niveau de gravité
- Décider sur quel type de ressource consigner les journaux
Le script effectue les opérations suivantes :
- Vérification de l'utilisation des conventions de nommage appropriées
- Assemblage des données du journal
- Écriture du journal au niveau des ressources du projet Google
Si vous envoyez des journaux à Logging à partir d'un poste de travail ou d'un serveur sur site, vous devez d'abord vous authentifier. Si vous envoyez des journaux à partir d'une instance cloud, votre authentification a déjà été effectuée.
Vous pouvez importer le module dans n'importe quel script Python de votre pipeline et l'exécuter sur un poste de travail local ou sur une instance cloud :
import logToStackdriver as lts
lts.write( 'This is the text to log.', show='myfilm', seq='slb', shot='0050', role='render' )
Par défaut, tous les journaux écrivent dans la ressource "projet", que vous pouvez trouver dans Google Cloud Console, sous Logging > Journaux > Projet Google :
Exporter les journaux
Si vous souhaitez conserver vos journaux au-delà de la période de conservation en vigueur, vous devez les exporter.
Pour un stockage économique à long terme, exportez vos journaux vers des buckets Compute Engine. Pour effectuer une analyse big data sur vos journaux, exportez-les vers un ensemble de données BigQuery. Dans les deux cas, vous devez d'abord créer un objet appelé récepteur.
Celui-ci vous permet de créer un filtre sélectionnant les entrées de journal que vous souhaitez exporter et de choisir Compute Engine ou BigQuery comme destination. Dès qu'un récepteur est créé, l'exportation des journaux spécifiés commence immédiatement vers la destination choisie. Vous pouvez exporter des journaux dans la visionneuse de journaux, à l'aide de l'API Cloud Logging, ou directement depuis l'outil de ligne de commande gcloud logging
.
Exporter vers BigQuery
Vous pouvez interroger les journaux stockés dans BigQuery à l'aide de la sémantique SQL. De nombreux outils d'analyse tiers sont compatibles de manière native avec ces journaux. Pour ce faire, procédez comme suit :
Créez un récepteur avec un filtre afin d'exporter les journaux dans cette table. Notez que dans la ligne de commande suivante,
[PROJECT_ID]
fait référence à votre projet Google Cloud.gcloud beta logging sinks create render-errors-bq \ bigquery.googleapis.com/projects/[PROJECT_ID]/datasets/[DATASET] \ --log-filter "jsonPayload.SHOW=myfilm AND jsonPayload.SHOT=fba AND severity>=WARNING"
Vous recevrez un message comportant le nom du compte de service à ajouter à votre ensemble de données BigQuery. Vous pouvez utiliser l'interface utilisateur Web en cliquant sur le menu déroulant à côté du nom de l'ensemble de données, puis sur Partager l'ensemble de données.
Le prochain journal transmis à Logging correspondant à ce filtre sera envoyé (après quelques instants) à l'ensemble de données. Vous trouverez plus de détails dans la documentation sur le fonctionnement des récepteurs.
Exporter vers Cloud Storage
Pour enregistrer vos journaux dans un fichier, exportez-les dans un bucket Cloud Storage. En ce qui concerne les buckets Cloud Storage, vous pouvez sélectionner une classe de stockage plus économique pour les fichiers moins fréquemment consultés, ou bénéficier des quotas d'utilisation gratuite. Cloud Storage offre un accès facile, soit par HTTP, soit par intégration directe avec de nombreux autres produits Google Cloud.
Les étapes suivantes montrent comment effectuer une exportation vers Cloud Storage :
- Créez un bucket Cloud Storage.
Dans Logging, créez un récepteur avec un filtre pour exporter ces journaux vers Cloud Storage.
gcloud beta logging sinks create render-errors-gcs \ storage.googleapis.com/my-gcs-bucket \ --log-filter "jsonPayload.SHOW=myfilm AND jsonPayload.SHOT=fba AND severity>=WARNING"
Le prochain journal envoyé à Logging correspondant à ce filtre sera envoyé, après quelques instants, vers un fichier du bucket. Vous trouverez plus de détails dans la documentation sur le fonctionnement des récepteurs.
Nettoyer
Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez les ressources individuelles.
Supprimer le projet
Le moyen le plus simple d'empêcher la facturation est de supprimer le projet que vous avez créé pour ce tutoriel.
Pour supprimer le projet :
- Dans Cloud Console, accédez à la page Gérer les ressources.
- Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
- Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.
Supprimer vos instances Compute Engine
Pour supprimer une instance Compute Engine, procédez comme suit :
- Dans Cloud Console, accédez à la page Instances de VM.
- Cochez la case correspondant à à l'instance que vous souhaitez supprimer.
- Cliquez sur Supprimer delete pour supprimer l'instance.
Supprimer votre bucket Cloud Storage
Pour supprimer un bucket Cloud Storage, procédez comme suit :
- Dans Cloud Console, accédez à la page Navigateur Cloud Storage.
- Cochez la case correspondant au bucket que vous souhaitez supprimer.
- Pour supprimer le bucket, cliquez sur Supprimer delete.
Étape suivante
- Consultez la documentation Cloud Logging.
- Obtenez plus d'informations sur fluentd.
- Obtenez plus d'informations sur le fichier de configuration fluentd.
- Apprenez-en plus sur les quotas et limites de Cloud Logging.
- Testez d'autres fonctionnalités de Google Cloud. Découvrez nos tutoriels.