Aller au menu Aller au contenu Aller au pied de page

Configurer des logs dans Talend Open Studio

Rédigé par Nicolas Busser

Pourquoi mettre en place des logs ?

Dans tout projet d’intégration de données, il est crucial de disposer d’une visibilité sur le succès des différents flux afin d’assurer la qualité, la traçabilité et la fiabilité des différents traitements. Pour cela, il est essentiel de mettre en place une stratégie de surveillance des flux, permettant de détecter et d’identifier les éventuels problèmes pouvant affecter les traitements et nuire aux activités des clients.

L’une des stratégies, couramment utilisée pour la surveillance des flux, est l’utilisation de logs, également connue sous le nom de journaux. Les logs sont des fichiers configurés par le développeur pour enregistrer de manière chronologique les événements et les actions qui se produisent lors de l’exécution du flux d’intégration de données. Ils fournissent une trace détaillée de chaque étape du processus, ce qui facilite le dépannage, l’analyse des performances et la compréhension des erreurs éventuelles.

Comment mettre en place des logs dans Talend Open Studio ?

Talend Open Studio (TOS) est une plateforme d’intégration de données open source pour la conception, le développement et l’exécution de flux de données. Dans des cas spécifiques de cet outil, plusieurs techniques peuvent être mises en place pour mettre en œuvre des logs efficaces. Voici quelques-unes de ces techniques que nous détaillerons par la suite :

1. TALEND OPEN STUDIO permet de définir différents niveaux de log, tels que : DEBUG, INFO, WARN. Ces niveaux permettent de contrôler la quantité d’informations enregistrées dans les logs. Un niveau de log DEBUG peut enregistrer des informations détaillées, tandis qu’un niveau de log ERROR peut se limiter aux erreurs critiques.

2. Il est possible de personnaliser les logs dans TALEND OPEN STUDIO en ajoutant des informations spécifiques, telles que des métadonnées sur les flux, des informations sur les transformations appliquées ou des données contextuelles. Cela permet d’enregistrer des informations supplémentaires pertinentes pour l’analyse ultérieure des logs.

3. Les logs peuvent être utilisés pour enregistrer les erreurs rencontrées lors de l’exécution du flux. Ils peuvent inclure des informations sur l’erreur elle-même, telles que le type d’erreur, le moment où elle s’est produite et les étapes du flux qui ont conduit à l’erreur. Cela facilite l’identification et la résolution des problèmes.

4. TALEND OPEN STUDIO peut être intégré à des outils de surveillance et d’analyse des logs, tels que ELK Stack (Elasticsearch, Logstash, Kibana), Splunk ou Graylog. Ces outils permettent d’agréger et de visualiser les logs de manière centralisée, facilitant ainsi la surveillance en temps réel, la recherche de données spécifiques et l’analyse des tendances. D’une grande complexité technique, la stack ELK ne sera pas vue dans cet article.

Mettre en place une stratégie de logs efficace dans Talend est la clé pour détecter rapidement les problèmes, les résoudre rapidement, et optimiser les performances. Au sein de TOS, plusieurs méthodes permettent de logger les différents flux. En dehors de la console présente dans l’outil lors des exécutions manuelles, Il n’existe pas de portail permettant d’afficher les logs générés par un flux qui serait lancé autrement, de manière automatique par exemple. En revanche, de nombreux composants sont disponibles dans la palette pour réaliser ce travail. Examinons une partie de ceux-ci.

Présentation rapide des outils de logs contenus dans Talend

tWarm

Fais remonter un message déclencheur au tLogCatcher sans bloquer l’exécution du job principal.

Log Talend tWarm
tDie

Envoie un message déclencheur au tCatcher et interrompt l’exécution du job une fois qu’il est déclenché. Le message est par la suite traité par le tLogCatcher.

Log Talend tDie
tLogCatcher

Ecoute le tWarm, le tDie ou d’autres commandes d’arrêt du job, comme des erreurs Java. Récupère les informations de log du message et les envoie à une sortie standard Talend.

Log Talend tCatcher

Plusieurs choix sont possibles dans ce composant en ce qui concerne les logs à traquer :

Log Talend tStatCatcher exemple

Il peut capturer les exceptions Java, les tDie et ou les tWarm. En fonction des champs sélectionnés, les messages émis par ces composants pourront être restitués ou non dans une sortie standard (fichiers, table de base de données). Le schéma utilisé pour ces 3 types de catch est identique et peut être restreint en utilisant un tMap (le schéma ne peut être mis à jour directement sur le tLogCatcher).

tFlowMeter

Mesure la volumétrie du flux à son niveau et envoie un message au tFlowMeterCatcher.

Log Talend tFlowMeter
tFlowMeterCatcher

Ecoute les composants tFlowMeter et permet de compiler des informations standards de log à la sortie définie.

Log Talend tMeterCatcher
tChronometerStart

Démarre le calcul du temps de traitement d’un sous job

Log Talend tChronometerStart
tChronometerStop

Arrête un chronomètre virtuel et permet de faire remonter la durée écoulée en tant que statistique.

Log Talend tChronometerStop
tStatCatcher

Permet de capturer les statistiques d’exécution du job, y compris les durées d’exécution, le nombre de lignes traitées, les erreurs rencontrées, etc.

Log Talend tStatCatcher
tAssert

Envoie un statut selon le succès (Ok) ou l’échec (Fail) du job dans lequel il est placé.

Log Talend tAssert
tAssertCatcher

Ecoute les tAssert ou les autres commandes Die dans le job et récupère les informations de log du message pour les envoyer dans une sortie Talend standard.

Log Talend tAssertCatcher

Différentes stratégies de journalisation dans Talend

De fait, plusieurs stratégies sont possibles pour journaliser les opérations d’un flux dans Talend, en utilisant les composants dédiés ou non. Examinons ces possibilités.

Utilisation du composant tLogCatcher
Log Talend tStatCatcher

Le composant tLogCatcher permet de capturer les messages d’erreur ou les logs générés par les autres composants du job. Vous pouvez définir des filtres pour capturer les messages d’erreur spécifiques ou simplement capturer tous les logs. Les logs capturés peuvent ensuite être écrits dans un fichier ou envoyés à une base de données, un système de gestion des logs ou tout autre système de stockage.

Avantages :

  • Capture des logs d’erreur : vous pouvez capturer les messages d’erreur générés par les composants du job, ce qui facilite le débogage.
  • Gestion centralisée des logs : vous pouvez stocker les logs capturés dans un fichier, une base de données ou tout autre système de stockage centralisé.
  • Flexibilité : vous pouvez définir des filtres pour capturer uniquement les logs pertinents, ce qui permet de réduire le volume de logs à gérer.

Inconvénients :

  • Configuration initiale nécessaire : vous devez configurer correctement le composant tLogCatcher pour capturer les logs souhaités. Cela inclus un grand nombre de composant tDie et tWarn pouvant alourdir la structure des jobs.
  • Surcharge de traitement : si le volume de logs est élevé, la capture de tous les logs peut entraîner une surcharge de traitement et affecter les performances globales du job.
Talend Flux chargement log
Utilisation du tFlowMeter (et catcher)
Log Talend tFlowMeter
Log Talend tMeterCatcher

Le composant tFlowMeter permet de mesurer et de contrôler le débit des données à différentes étapes du job.

Avantages :

  • Mesure du débit des données : vous pouvez suivre le débit des données à différentes étapes du job pour identifier les éventuels goulets d’étranglement ou les problèmes de performance.
  • Contrôle du débit : vous pouvez définir des seuils de débit et prendre des mesures appropriées si les seuils sont dépassés.
  • Possibilité de filtrage : vous pouvez mesurer le débit pour des flux de données spécifiques ou appliquer des filtres pour mesurer uniquement certaines données.

Inconvénients :

  • Configuration initiale nécessaire : vous devez configurer correctement le tFlowMeter pour mesurer le débit souhaité.
  • Surcharge de traitement : la mesure du débit peut ajouter une surcharge de traitement, en particulier si vous mesurez le débit à plusieurs endroits du job ou si le volume de données est important.

Il est important de noter que le tFlowMeter est principalement destiné à la capture de statistiques et de mesures de performance. Il peut compléter les autres méthodes de création de logs dans Talend Open Studio, mais ne fournissent pas de logs détaillés sur les données elles-mêmes.

Utilisation du tStatCatcher
Log Talend tStatCatcher

Le composant tStatCatcher permet de capturer les statistiques d’exécution du job, y compris les durées d’exécution, le nombre de lignes traitées, les erreurs rencontrées, etc.

Avantages :

  • Capture des statistiques d’exécution : vous pouvez obtenir des informations précises sur les performances de votre job, y compris les temps d’exécution et les statistiques de traitement.
  • Gestion centralisée des statistiques : vous pouvez stocker les statistiques capturées dans un fichier, une base de données ou tout autre système de stockage centralisé.
  • Possibilité de filtrage : vous pouvez définir des filtres pour capturer uniquement les statistiques pertinentes.

Inconvénients :

  • Configuration initiale nécessaire : vous devez configurer correctement le tStatCatcher pour capturer les statistiques souhaitées.
  • Surcharge de traitement : si vous capturez de nombreuses statistiques, cela peut entraîner une surcharge de traitement et affecter les performances globales du job.

Il est important de noter que le tStatCatcher est principalement destiné à la capture de statistiques et de mesures de performance. Il peut compléter les autres méthodes de création de logs dans Talend Open Studio, mais ne fournissent pas de logs détaillés sur les données elles-mêmes.

Utilisation du tLogRow
Log Talend tLogRow1

Le composant tLogRow permet d’afficher les lignes de données sur la console lors de l’exécution du job. Vous pouvez connecter ce composant à la sortie de n’importe quel autre composant pour afficher les données qui le traversent.

Avantages :

  • Facilité d’utilisation : le composant tLogRow est simple à configurer et à utiliser.
  • Affichage en temps réel : les logs sont affichés directement dans la console pendant l’exécution du job, ce qui permet un suivi immédiat.
  • Convient aux logs de petite taille : cette méthode est appropriée lorsque vous souhaitez afficher uniquement quelques lignes de données à des étapes spécifiques du job.

Inconvénients :

  • Pas de persistance des logs : les logs ne sont pas enregistrés dans un fichier ou une base de données, ce qui rend difficile la consultation des logs après l’exécution du job.
  • Difficulté de gestion des logs volumineux : si vous générez de nombreux logs, il peut être difficile de les suivre dans la console, surtout lorsque l’exécution du job est rapide.
  • Aucune normalisation : les logs auront la forme de leur flux respectif, empêchant de facilement normaliser les différents logs pour des jobs distincts.
Utilisation de fonctions Java de logging
Logo java

Enfin, il est possible d’utiliser des expressions Java dans les composants Talend pour afficher des logs en utilisant la fonction System.out.println(). Cette méthode est utile pour afficher des messages personnalisés ou des valeurs de variables à des étapes spécifiques du job.

Avantages :

  • Flexibilité totale : vous pouvez afficher des messages personnalisés ou des valeurs de variables à des étapes spécifiques du job, au sein même du code !
  • Simplicité : cette méthode utilise des expressions Java standard, ce qui la rend facile à utiliser.

Inconvénients :

  • Logs mélangés avec les autres messages de la console : les logs affichés avec System.out.println() sont mélangés avec les autres messages de la console, ce qui peut rendre la lecture des logs plus difficile.
  • Difficulté de gestion des logs volumineux : si vous générez de nombreux logs, il peut être difficile de les suivre dans la console, surtout lorsque l’exécution du job est rapide.
  • Pas de persistance des logs : ils ne sont pas enregistrés dans un fichier ou une base de données, ce qui rend difficile la consultation des logs après l’exécution du job.
  • Changement de paradigme : le débogage via des sondes java demande à passer d’un paradigme intégration à celui d’un développeur java, ce qui peut rendre difficile la maintenabilité du projet.
Gestion log globale

Génère automatiquement un traitement des logs en fin de chargement (sans avoir à définir de fichier de sortie dans chaque job), Cette méthode traquera sur le projet/job tous les tWarm, tDie et Error java, (= tLogCatcher : en revanche, parmis ces 3, impossible à ce niveau de pouvoir choisir lesquels spécifiquement restituer, ils remonteront tous dans les cibles définies) ou tStatCatcher et tFlowMeterCatcher.

Paramètre des logs possible au niveau du projet :

Paramètre des logs possibles au niveau du projet

Il est possible de configurer des paramètres de tCatch à partir des propriétés du projet et ainsi regrouper au même endroit tous les tCatch du projet.

Gestion des Logs possible au niveau d’un job en particulier :

Paramètre des logs possibles au niveau d'un log en particulier

Dans l’onglet rattaché au job, celui-ci peut récupérer le format défini pour le projet si celui-ci est renseigné, ou peut aussi posséder une configuration qui lui est propre pour une analyse ponctuelle d’un job en particulier.

ATTENTION : si un log job est spécifié et que sa configuration est différente de la configuration du projet, celle-ci sera exécutée en priorité pour ce job à la place de celle du projet. En revanche, si une sortie est définie dans le flux de chargement à l’aide d’un tLogCatcher, celle-ci sera en complément de l’action définie dans la configuration du Job/Projet (2 sorties de logs seront ainsi utilisées).

Test du flux journalisé

Exemple : Mise en place de logs via tDie/tWarn dans TOS

Mise en place log dans TOS

Restitution du log possible à choisir dans un tMap issu d’un tLogCatcher

Restitution log

Exemple de restitution du tLogCatcher

Exemple restitution log tCatcher

Colonnes pouvant être utilisées de manière pertinente dans un log d’exécution pour restitutions : Context, Moment, Project, Job, Code, Origine, Message

Exemple restitution log tCatcher 2

Obtenu sur notre job d’exemple Via le tMap suivant après le tLogCatcher, ou alors à extraire à partir de la table ou fichier centralisé des logs (traitement qui sera à mettre en place)

Extraction log

Le flux de chargement possède à son lancement un tChronometrStart ainsi qu’un tChronometerStop à la fin du flux. Celui-ci peut aussi être récupérable grâce aux variables Outline.