paint-brush
Comment extraire la valeur maximale des journauxpar@alvinslee
1,525 lectures
1,525 lectures

Comment extraire la valeur maximale des journaux

par Alvin Lee9m2023/08/25
Read on Terminal Reader

Trop long; Pour lire

Nous examinerons comment les journaux peuvent être conçus, les défis et les solutions liés à la journalisation dans les grands systèmes, et comment réfléchir aux métriques basées sur les journaux et à la conservation à long terme.
featured image - Comment extraire la valeur maximale des journaux
Alvin Lee HackerNoon profile picture

La journalisation est sans doute l'élément le plus important de votre solution d'observabilité. Les journaux fournissent des informations fondamentales et riches sur le comportement du système. Dans un monde idéal, vous prendriez toutes les décisions concernant la journalisation et mettriez en œuvre une approche cohérente sur l’ensemble de votre système.


Cependant, dans le monde réel, vous pouvez travailler avec des logiciels existants ou gérer différents langages de programmation, frameworks et packages open source, chacun avec son propre format et sa propre structure de journalisation.


Avec une telle diversité de formats de journaux dans votre système, quelles mesures pouvez-vous prendre pour extraire le plus de valeur de tous vos journaux ? C'est ce que nous aborderons dans cet article.


Nous examinerons comment les journaux peuvent être conçus, les défis et les solutions liés à la journalisation dans les grands systèmes, et comment réfléchir aux métriques basées sur les journaux et à la conservation à long terme.


Examinons les niveaux et les formats de journaux.

Conception de la journalisation

De nombreuses considérations entrent en jeu dans la conception des journaux, mais les deux aspects les plus importants sont l'utilisation des niveaux de journaux et l'utilisation de formats de journaux structurés ou non structurés.

Niveaux de journalisation

Les niveaux de journalisation sont utilisés pour classer les messages de journal en fonction de leur gravité. Les niveaux de journalisation spécifiques utilisés peuvent varier en fonction du cadre ou du système de journalisation. Cependant, les niveaux de journalisation couramment utilisés incluent (par ordre de verbosité, du plus élevé au plus bas) :


  • TRACE : capture chaque action entreprise par le système, pour reconstruire un enregistrement complet et tenir compte de tout changement d'état.


  • DEBUG : capture des informations détaillées à des fins de débogage. Ces messages ne sont généralement pertinents que pendant le développement et ne doivent pas être activés dans les environnements de production.


  • INFO : Fournit des informations générales sur le fonctionnement du système pour transmettre des événements ou des jalons importants dans l'exécution du système.


  • AVERTISSEMENT : indique des problèmes ou des situations potentiels pouvant nécessiter une attention particulière. Ces messages ne sont pas critiques mais doivent être notés et étudiés si nécessaire.


  • ERREUR : Indique les erreurs survenues lors de l'exécution du système. Ces messages mettent généralement en évidence des problèmes qui doivent être résolus et peuvent avoir un impact sur les fonctionnalités du système.


La journalisation au niveau approprié permet de comprendre le comportement du système, d'identifier les problèmes et de les résoudre efficacement.


Lorsqu'il s'agit des composants système que vous créez, nous vous recommandons de consacrer du temps à la définition de l'ensemble des niveaux de journalisation utiles. Comprenez quels types d'informations doivent être incluses dans les messages à chaque niveau de journalisation et utilisez les niveaux de journalisation de manière cohérente.


Nous verrons plus tard comment gérer les applications tierces, pour lesquelles vous n'avez aucun contrôle sur les niveaux de journalisation. Nous examinerons également les applications existantes que vous contrôlez mais qui sont trop volumineuses pour migrer vers les niveaux de journalisation standard.

Journaux structurés et non structurés

Les entrées dans les journaux structurés ont un format bien défini, généralement sous forme de paires clé-valeur ou d'objets JSON. Cela permet d'obtenir des entrées de journal cohérentes et lisibles par machine, ce qui facilite l'analyse des données de journal par programmation.


La journalisation structurée permet une interrogation et une analyse avancées des journaux, ce qui la rend particulièrement utile dans les systèmes à grande échelle.


D'un autre côté, la journalisation non structurée (forme libre) capture les messages dans un format plus lisible par l'homme, sans structure prédéfinie. Cette approche permet aux développeurs d'enregistrer les messages de manière plus naturelle et plus flexible.


Cependant, extraire par programme des informations spécifiques des journaux résultants peut s’avérer très difficile.


Le choix entre les journaux structurés et non structurés dépend de vos besoins spécifiques ainsi que des exigences et contraintes de votre système. Si vous prévoyez avoir besoin d'une analyse avancée des journaux ou d'une intégration avec des outils d'analyse des journaux, les journaux structurés peuvent offrir des avantages significatifs.


Toutefois, si vous avez uniquement besoin de simplicité et de lisibilité, les journaux non structurés peuvent suffire.


Dans certains cas, une approche hybride peut également être utilisée, dans laquelle vous utilisez des journaux structurés pour les événements importants et des journaux non structurés pour les messages plus généraux.


Pour les systèmes à grande échelle, vous devriez vous tourner vers la journalisation structurée lorsque cela est possible, mais notez que cela ajoute une autre dimension à votre planification. L'attente pour les messages de journal structurés est que le même ensemble de champs sera utilisé de manière cohérente dans tous les composants du système. Cela nécessitera une planification stratégique.

Les défis de l'exploitation forestière

Avec des systèmes comprenant plusieurs composants, chaque composant aura très probablement son propre modèle pour gérer ses journaux. Passons en revue les défis que cela entraîne.

Destinations disparates

Les composants se connecteront à différentes destinations : fichiers, journaux système, stdout ou stderr. Dans les systèmes distribués, la collecte de ces journaux dispersés pour une utilisation efficace est fastidieuse.


Pour cela, vous aurez besoin d'une approche diversifiée de la collecte de journaux, comme l'utilisation de collecteurs installés et de collecteurs hébergés de Sumo Logic.

Différents formats

Certains composants utiliseront une journalisation non structurée et de forme libre, ne suivant aucun format en particulier. Parallèlement, les journaux structurés peuvent être plus organisés, mais les composants dotés de journaux structurés peuvent utiliser des ensembles de champs complètement différents.


Unifier les informations que vous obtenez à partir d’une diversité de journaux et de formats nécessite les bons outils.

Niveaux de journalisation incohérents

Les composants de votre système peuvent utiliser différentes plages de niveaux de journalisation. Même si vous consolidez tous les messages de journal dans un système de journalisation centralisé (comme vous le devriez), vous devrez gérer l'union de tous les niveaux de journalisation.


Un défi qui se pose est celui où différents niveaux de log doivent être traités de la même manière. Par exemple, ERREUR dans un composant peut être identique à CRITIQUE dans un autre composant, nécessitant une escalade immédiate.


Vous êtes confronté au défi inverse lorsque le même niveau de journalisation dans différents composants signifie des choses différentes. Par exemple, les messages INFO dans un composant peuvent être essentiels pour comprendre l'état du système, tandis que dans un autre composant, ils peuvent être trop verbeux.

Coût de stockage des journaux

Les grands systèmes distribués accumulent de nombreux journaux. La collecte et le stockage de ces journaux coûtent cher. Les coûts liés aux journaux dans le cloud peuvent représenter une part importante du coût total du système.

Relever ces défis

Bien que les défis liés à la journalisation dans de grands systèmes distribués soient importants, des solutions peuvent être trouvées grâce à certaines des pratiques suivantes.

Regroupez vos journaux

Lorsque vous exécutez un système distribué, vous devez utiliser une solution de journalisation centralisée. Lorsque vous exécutez des agents de collecte de journaux sur chaque machine de votre système, ces collecteurs enverront tous les journaux à votre plateforme d'observabilité centrale.


Sumo Logic, qui s'est toujours concentré sur la gestion et l'analyse des journaux , est le meilleur de sa catégorie en matière d'agrégation de journaux.

Vers un format unifié

Le traitement des journaux dans différents formats constitue un gros problème si vous souhaitez corréler les données des journaux à des fins d'analyse et de dépannage entre les applications et les composants. Une solution consiste à transformer différents journaux dans un format unifié.


Le niveau d'effort pour cette tâche peut être élevé, alors envisagez de le faire par étapes, en commençant par vos composants les plus essentiels et en descendant progressivement.

Établissez une norme de journalisation pour vos applications

Pour vos propres applications, travaillez à établir une approche de journalisation standard qui adopte un ensemble uniforme de niveaux de journalisation, un format de journal structuré unique et une sémantique cohérente.


Si vous possédez également des applications existantes, évaluez le niveau de risque et le coût associés à leur migration pour respecter votre norme.


Si une migration n’est pas réalisable, traitez vos applications existantes comme vous le feriez avec des applications tierces.

Enrichir les journaux à partir de sources tierces

L'enrichissement des journaux à partir de sources tierces implique d'améliorer les données des journaux avec des informations contextuelles provenant de systèmes ou de services externes. Cela apporte une meilleure compréhension des événements de journal, facilitant les activités de dépannage, d’analyse et de surveillance.


Pour enrichir vos journaux, vous pouvez intégrer des systèmes externes (tels que des API ou des files d'attente de messages) pour récupérer des données supplémentaires liées aux événements de journal (telles que des informations utilisateur, des détails sur le client ou des métriques système).

Gérer le volume, la fréquence et la conservation des journaux

Une gestion minutieuse du volume, de la fréquence et de la conservation des journaux est cruciale pour une gestion et un stockage efficaces des journaux.


  • Volume : la surveillance du volume des journaux générés vous aide à contrôler la consommation des ressources et les impacts sur les performances.


  • Fréquence : déterminez la fréquence de journalisation, en fonction de la criticité des événements et du niveau de surveillance souhaité.


  • Rétention : définissez une politique de conservation des journaux adaptée aux exigences de conformité, aux besoins opérationnels et au stockage disponible.


  • Rotation : archivez ou purgez périodiquement les anciens fichiers journaux pour gérer efficacement la taille des fichiers journaux.


  • Compression : compressez les fichiers journaux pour réduire les besoins de stockage.

Métriques basées sur les journaux

Les mesures dérivées de l'analyse des données de journaux peuvent fournir des informations sur le comportement et les performances du système. Le fonctionnement des métriques basées sur les journaux présente des avantages et des défis.

Avantages

  • Informations granulaires : les métriques basées sur les journaux fournissent des informations détaillées et granulaires sur les événements du système, vous permettant d'identifier les modèles, les anomalies et les problèmes potentiels.


  • Surveillance complète : en tirant parti des métriques basées sur les journaux, vous pouvez surveiller votre système de manière complète, obtenant ainsi une visibilité sur les métriques critiques liées à la disponibilité, aux performances et à l'expérience utilisateur.


  • Analyse historique : les métriques basées sur les journaux fournissent des données historiques qui peuvent être utilisées pour l'analyse des tendances, la planification des capacités et l'optimisation des performances. En examinant les tendances des journaux au fil du temps, vous pouvez prendre des décisions basées sur les données pour améliorer l'efficacité et l'évolutivité.


  • Flexibilité et personnalisation : vous pouvez adapter votre extraction de métriques basées sur les journaux à votre application ou système, en vous concentrant sur les événements et les points de données les plus significatifs pour vos besoins.

Défis

  • Définir des métriques significatives : étant donné que l'ensemble des métriques à votre disposition dans tous vos composants est incroyablement vaste (et qu'il ne serait pas logique de toutes les capturer), l'identification des métriques à capturer et à extraire des journaux peut s'avérer une tâche complexe.


    Cette identification nécessite une compréhension approfondie du comportement du système et un alignement étroit avec vos objectifs commerciaux.


  • Extraction et analyse des données : l'analyse des journaux pour extraire des métriques utiles peut nécessiter des outils spécialisés ou des analyseurs personnalisés. Cela est particulièrement vrai si les journaux ne sont pas structurés ou formatés de manière incohérente d'un composant à l'autre.


    Cette configuration peut prendre du temps et nécessiter une maintenance à mesure que les formats de journaux changent ou que de nouvelles sources de journaux émergent.


  • Nécessité d'une analyse en temps réel : les retards dans le traitement des métriques basées sur les journaux peuvent conduire à des métriques obsolètes ou non pertinentes. Dans la plupart des situations, vous aurez besoin d'une plate-forme capable d'effectuer un traitement rapide et en temps réel des données entrantes afin d'exploiter efficacement les métriques basées sur les journaux.


  • Impact sur les performances : la capture continue des métriques de profilage des composants exerce une pression supplémentaire sur les ressources système. Vous devrez trouver un bon équilibre entre la capture de suffisamment de métriques basées sur les journaux et le maintien de performances système adéquates.


  • Bruit et non-pertinence des données : les données de journal incluent souvent beaucoup de bruit et d'informations non pertinentes, ne contribuant pas à des mesures significatives. Un filtrage et une normalisation minutieux des journaux sont nécessaires pour concentrer la collecte de données sur les événements pertinents.

Conservation des journaux à long terme

Après avoir opté pour l'agrégation des journaux dans un système centralisé, vous devrez toujours envisager des politiques de conservation des journaux à long terme. Voyons les questions critiques pour ce domaine.

Combien de temps devez-vous conserver les journaux ?

La durée pendant laquelle vous devez conserver un journal dépend de plusieurs facteurs, notamment :


  • Type de journal : Certains journaux (tels que les journaux d'accès) peuvent être supprimés après un court laps de temps. D'autres journaux (tels que les journaux d'erreurs) peuvent devoir être conservés plus longtemps au cas où ils seraient nécessaires au dépannage.


  • Exigences réglementaires : des secteurs comme la santé et la finance ont des réglementations qui obligent les organisations à conserver des journaux pendant un certain temps, parfois même quelques années.


  • Politique de l'entreprise : votre entreprise peut avoir des politiques qui dictent la durée de conservation des journaux.


  • Taille des journaux : Si vos journaux sont volumineux, vous devrez peut-être les faire pivoter ou les supprimer plus fréquemment.


  • Coût du stockage : quel que soit l'endroit où vous stockez vos journaux (sur site ou dans le cloud), vous devrez prendre en compte le coût du stockage.

Comment réduire le niveau de détail et le coût des journaux plus anciens ?

La suppression des anciens journaux est bien entendu le moyen le plus simple de réduire vos coûts de stockage. Cependant, cela peut être un peu lourd et vous souhaiterez parfois conserver les informations des anciens journaux.


Lorsque vous souhaitez conserver les informations des anciens journaux, mais que vous souhaitez également être rentable, envisagez de prendre certaines de ces mesures :


  • Journaux de sous-échantillonnage : dans le cas de composants qui génèrent de nombreuses instructions de journal répétitives, vous pouvez ingérer uniquement un sous-ensemble des instructions (par exemple, 1 sur 10).


  • Couper les journaux : pour les journaux contenant des messages volumineux, vous pouvez supprimer certains champs. Par exemple, si un journal d'erreurs contient un code d'erreur et une description de l'erreur, vous pouvez disposer de toutes les informations dont vous avez besoin en conservant uniquement le code d'erreur.


  • Compression et archivage : Vous pouvez compresser les anciens journaux et les déplacer vers un stockage moins cher et moins accessible (notamment dans le cloud). Il s'agit d'une excellente solution pour les journaux que vous devez stocker pendant des années pour répondre aux exigences de conformité réglementaire.

Conclusion

Dans cet article, nous avons examiné comment tirer le meilleur parti de la journalisation dans des systèmes à grande échelle.


Bien que la journalisation dans ces systèmes présente un ensemble unique de défis, nous avons examiné des solutions potentielles à ces défis, telles que l'agrégation des journaux, la transformation des journaux dans un format unifié et l'enrichissement des journaux avec des données provenant de sources tierces.


La journalisation est un élément essentiel de l’observabilité. En suivant les pratiques décrites dans cet article, vous pouvez garantir que vos journaux sont gérés efficacement, ce qui vous permet de résoudre les problèmes, d'identifier les problèmes et d'obtenir des informations sur le comportement de votre système.


Et vous pouvez le faire tout en maîtrisant vos coûts d’exploitation forestière.


Également publié ici