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é :

  1. 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




  2. 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%.


  3. Traces



Observabilité des données



  1. 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.



  2. 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.

  3. 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.).

  4. 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).



  5. 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.

Date de publication: 2023-09-26T20:40:00+08:00
Date de modification: 2024-09-26T22:35:18
Auteur: