Publié le : 26/09/2023 à 14:40 Vues : 557

La capacité à connaître l'état interne d'un système à partir des données que cette dernière émet. Ces données émises sont classées en 3 (désormais 4) catégories. On parle des piliers de l'observabilité : logs, métriques, traces et profiles (le tout nouveau).

Introduction

Observabilité des systèmes

Pour observer un système, il faut collecter et analyser les données qu'il emet. Les systèmes modernes émettent automatiquement (ou via l'activation dans sa configuration) ces données. Pour les autres, on dit qu'il faut les rendre observable. Pour cela, on va, en fonction des systèmes leurs ajouter des SDK, des plugins, interoger leurs API ... Au final, quelque soit la méthode, ces données peuvent être classées en trois catégories. On parle des piliers de l'observabilité :

Logs

Les logs encore appelé journal est le mécanimse utilisé par un système pour informer sur son état de fonctionnement. Dans la majorité des cas, ces derniers sont stockées dans des fichiers qu'on appelle fichier de logs.

Un fichier de logs est donc constitué de plusieurs lignes dont chacune représente un changement d'état : on parle d'événements :
  • démarrage/arrêt de l'application
  • connexion/deconnexion d'un utilisateur
  • ajout/suppression d'une image
  • ...

ATTENTION: un événement peut être renseigné dans un fichier en mono ou multiligne. La majorité des applications vont faire du monoligne mais certaines comme des erreurs de fonctionnement sur des systèmes de type JAVA vont générer des événements sur plusieurs lignes qu'on appele trace d'appels (stack trace).

Les informations contenues dans un fichier de logs vont donc permettre d'analyser et de comprendre le focntionnement d'un système. Avec l'observabilité on va donc utiliser des solutions qui vont analyser automatiquement ces fichiers. Il sera donc important, lors de la configuration de ces solutions, de déclarer si le fichier de logs est mono et/ou multiligne pour avoir une analyse cohérente. Les systèmes vont donc vous aider en générant des événements formaté en JSON, XML, CSV ... ou dans le cas des fichiers non formatés en ajoutant des delimiteurs pour vous aider à identifier le début ou la fin et eventuellement les parties intermédiaires.

Au final, un bon fichier de logs doit :
  • horodater chaque événement.
  • disposer d'un format de log : il s'agit du schéma qui va permettre de comprendre la strcuture d'un événement.
  • disposer d'un format de log

Métriques

Les métriques sont des mesures quantifiables qui permettent d'avoir une visibilité sur l'utilisation des systèmes. Les métriques vont varier en fonction du système. On va en général associer des seuils à chaque métrique pour déclencher des actions paliatives avant d'arriver au point de ruptue.

Par exemple pour un système de type :
  • serveur : on va surveiller la consommation CPU, RAM, disque...
  • serveur web : on va surveiller le nombre d'accès, le nombre de requêtes par seconde, l'état des workers


Assez souvent les serveurs de test et recette sont sous dimensionnés par rapprt aux équivalents en PRODUCTION. Cela pose un problème pour définir des seuils car la valeur risque de changer par environnement. Pour résoudre ce problème, on va quand c'est possible plutôt travailler avec des pourcentages ce qui uniformise le seuil quelque soit l'environnement. Par exemple, on a le seuil d'utilisation CPU défini à 80%.

Traces



Profiles

Le profilage en continu (Continuous Profiling) est souvent considéré comme le 4ème pilier de l'observabilité. Contrairement aux traces qui suivent une requête de bout en bout, les profils permettent de comprendre l'exécution du code au niveau du processeur (CPU) et de la mémoire (RAM) ligne par ligne. Ils répondent à la question : 'Quelle fonction ou ligne de code consomme le plus de ressources en production ?'

Des outils comme Grafana Pyroscope permettent de collecter ces profils avec une très faible empreinte sur les performances, facilitant ainsi l'optimisation du code, la réduction des coûts d'infrastructure et l'amélioration des temps de réponse.

Observabilité des données

Fraîcheur des Données

Fraîcheur des Données
La fraîcheur des données mesure le temps écoulé entre le moment où les données sont collectées et le moment où elles sont disponibles pour être consommées. Elle est cruciale pour s'assurer que les décisions sont basées sur des informations actuelles. Des données obsolètes peuvent engendrer des erreurs ou des retards dans les prises de décision. Pour surveiller la fraîcheur, il est possible de mesurer :
  • Âge des données : Temps écoulé depuis la dernière mise à jour.
  • Latence de traitement : Délai entre l'apparition de nouvelles données dans la source et leur disponibilité dans le système cible.

Distribution des Données

Distribution des Données
La distribution des données permet de visualiser comment les valeurs se répartissent au sein d'un ensemble de données. Cela inclut les statistiques descriptives telles que la moyenne, la médiane, l'écart-type, les quartiles et la détection des valeurs aberrantes. Elle aide à détecter des anomalies ou des schémas inattendus. Voici quelques indicateurs à surveiller :
  • Moyenne : Valeur moyenne des données dans une colonne.
  • Écart-type : Mesure de la dispersion des données autour de la moyenne.
  • Valeurs aberrantes : Pourcentage de valeurs hors d’un intervalle attendu.

Volume des Données

Volume des Données
Le volume des données correspond à la quantité totale de données présentes dans un système ou un pipeline à un moment donné. Il permet de suivre la croissance ou la diminution des volumes de données pour identifier des comportements anormaux tels que des pertes ou des duplications de données. Les indicateurs de volume incluent :
  • Nombre d’enregistrements : Total d'enregistrements dans une table ou un dataset.
  • Taille en octets : Taille totale des données dans le stockage (Mo, Go, etc.).

Schéma des Données

Schéma des Données
Le schéma des données représente la structure des ensembles de données, incluant les types de colonnes, les contraintes, et les relations entre différentes tables. La surveillance de l’évolution du schéma permet de s’assurer que les modifications sont conformes aux attentes et que les relations entre les tables sont bien respectées. Les indicateurs à surveiller sont :
  • Validation de schéma : Vérifier que le schéma actuel correspond aux attentes en termes de types de colonnes, noms et relations.
  • Évolution de schéma : Suivre les modifications dans le schéma des tables (ajouts/suppressions de colonnes).

Lignage des Données

Lignage des Données
Le lignage des données permet de tracer l’origine des données, leur parcours à travers les transformations effectuées dans les pipelines, et leur destination finale. Il s’assure de la transparence du traitement des données et aide à diagnostiquer les erreurs potentielles à la source. Les éléments de lignage incluent :
  • Source de la donnée : Identifier l’origine des données.
  • Transformation : Enregistrer toutes les transformations appliquées aux données.
  • Destination finale : Vérifier que les données atteignent leur destination prévue.

À propos de cet article

Auteur(s) : Martin LEKPA (Tech Lead et formateur Observabilité)

Date de création : 26/09/2023 à 14:40

Date de modification : 20/05/2026 à 18:14

Mots-clés : observabilité observabilité des systèmes observabilité des données observability logs métriques traces piliers dynatrace elastic elasticsearch logstash beats

Lien copié dans le presse-papiers !