Pour faire simple, l’observabilité désigne la capacité à mesurer l’état interne d’un système en examinant les données qu’il produit. On considère qu’un système est « observable » s’il est possible d’évaluer son état actuel en utilisant uniquement des informations de sortie, ou plus précisément des données de capteur.
Splunk est fier d’avoir été désigné leader dans le domaine de l’observabilité et de la supervision des performances des applications par Gartner®. Consultez le Gartner® Magic Quadrant™ pour comprendre pourquoi. Recevoir le rapport →
En savoir plus sur les solutions et les produits Splunk pour l’observabilité :
Bien plus qu’un terme à la mode, le mot « observabilité » est apparu il y a plusieurs dizaines d’années avec la théorie du contrôle, qui vise à décrire et comprendre les systèmes autorégulés. Aujourd’hui, on l’applique à l’amélioration des performances des systèmes informatiques distribués. Les organisations s’appuient sur l’observabilité pour assurer le fonctionnement des systèmes de leur environnement IT ; 87 % des entreprises emploient désormais des spécialistes qui se consacrent entièrement à la pratique selon notre dernière étude État de l’observabilité.
L’observabilité exploite trois types de données de télémétrie : les métriques, les logs et les traces. Elle offre ainsi une visibilité détaillée sur les systèmes distribués et aide les équipes à parvenir à la cause profonde d’un large éventail de problèmes, afin d’améliorer les performances des systèmes.
Au cours des dernières années, les entreprises ont rapidement adopté des applications et des services d’infrastructure cloud-native, comme AWS, sous la forme de technologies de microservices, de fonctions serverless et de conteneurs. Dans ces systèmes distribués, le traçage d’un événement jusqu’à son origine nécessite l’exécution de milliers de processus dans le cloud, sur site ou les deux. Mais les techniques et les outils de supervision conventionnels peinent à suivre les nombreuses voies de communication et interdépendances dans ces architectures distribuées.
La supervision et l’observabilité sont deux concepts distincts et interdépendants.
Plus précisément, la supervision consiste à observer les performances d’un système dans le temps. Les outils de supervision collectent et analysent les données système et les traduisent en informations exploitables. Les technologies de supervision, notamment la supervision des performances des applications (APM), peuvent vous indiquer si un système est en service ou hors service, ou si les performances des applications sont dégradées. L’agrégation et la corrélation des données de supervision peuvent également vous aider à faire des inférences plus importantes à propos du système. Le temps de chargement, par exemple, peut donner aux développeurs des informations sur l’expérience utilisateur d’un site web ou d’une application.
L’observabilité évalue dans quelle mesure les états internes du système peuvent être déduits des informations qu’il renvoie. Elle exploite les données et les informations obtenues par la supervision pour fournir une compréhension globale de votre système, notamment de son état et de ses performances. L’observabilité de votre système dépend donc en partie de la manière dont vos métriques de supervision peuvent interpréter les indicateurs de performance de votre système.
Autre différence importante, la supervision exige que vous sachiez à l’avance ce qu’il faut superviser. L’observabilité vous permet de déterminer les indicateurs importants en observant les performances du système au fil du temps et en posant des questions pertinentes à son sujet.
L’observabilité est cruciale dans le développement stratégique, car elle vous donne un contrôle accru sur les systèmes complexes. Les systèmes simples ont moins de « pièces mobiles », ce qui les rend plus faciles à gérer. La supervision de l’état du CPU, de la mémoire, des bases de données et du réseau suffit généralement à comprendre ces systèmes et à appliquer la solution appropriée à un problème.
Les systèmes distribués rassemblent un nombre bien plus élevé de pièces interconnectées, ce qui augmente nécessairement le nombre et la diversité des défaillances susceptibles de se produire. Pensez aussi que les systèmes distribués sont constamment mis à jour, et que chaque modification peut faire émerger un nouveau type de problème.
Dans un environnement distribué, comprendre un problème en cours représente un défi considérable, en grande partie parce qu’il produit plus d’« inconnues inconnues » que les systèmes plus simples. Parce que la supervision exige des « inconnues connues », elle ne parvient souvent pas à résoudre correctement les problèmes de ces environnements complexes.
L’observabilité est mieux adaptée à l’imprévisibilité des systèmes distribués, principalement parce qu’elle vous permet de poser des questions sur le comportement de votre système au fur et à mesure que les problèmes surviennent. « Pourquoi est-ce que X ne fonctionne plus ? » ou « Qu’est-ce qui provoque de la latence en ce moment ? ». Voilà le type de questions auxquelles l’observabilité peut répondre.
Dans les environnements de conteneurs et de microservices, l’observabilité expose l’état des applications en production pour permettre aux développeurs de mieux identifier et résoudre les problèmes de performances.
Les services de conteneur (tels que Docker, Kubernetes et autres) et les microservices répondent aux risques accrus d’indisponibilité et autres liés aux environnements cloud ou aux logiciels monolithiques, dans lesquels toute modification apportée à la base de code affecte l’ensemble de l’application et ses dépendances. Les conteneurs et les microservices décomposent les applications en services indépendants, ce qui permet aux développeurs de modifier et de redéployer un service particulier plutôt que l’ensemble de l’application.
Une architecture en conteneurs présente toutefois de nouveaux défis. Les microservices interdépendants sont généralement répartis sur plusieurs hôtes et, lorsque l’infrastructure grandit, le nombre de microservices en production suit la même tendance. Il est donc difficile pour les équipes DevOps de savoir ce qui est actuellement exécuté en production, ce qui entraîne des cycles de livraison plus longs, des temps d’arrêt et d’autres problèmes.
L’observabilité répond à ces défis en offrant une visibilité sur les systèmes distribués, aidant ainsi les développeurs à mieux comprendre les performances et la disponibilité d’une application. En cas de défaillance, elle offre le contrôle nécessaire pour localiser les goulots d’étranglement et déboguer ou résoudre rapidement le problème.
Les principales classes de données utilisées dans l’observabilité sont les logs, les métriques et les traces. Ensemble, ils forment ce qu’on appelle souvent « les trois piliers de l’observabilité ».
Logs : un log est un enregistrement texte d’un événement qui s’est produit à un moment donné, accompagné d’un horodatage indiquant quand il s’est produit et de données de contexte. On recense trois formats de logs :
Le texte brut est le plus courant, mais les logs structurés, qui incluent des données et des métadonnées supplémentaires et sont plus faciles à interroger, deviennent de plus en plus populaires. Bien souvent, les logs sont aussi le premier endroit où regarder quand un système ne fonctionne pas comme prévu.
Métriques : une métrique est une valeur numérique mesurée sur un intervalle de temps et qui inclut des attributs spécifiques (horodatage, nom, KPI et valeur, entre autres). Contrairement aux logs, les métriques sont structurées par défaut, ce qui facilite les requêtes et l’optimisation du stockage, permettant de les conserver pendant des périodes plus longues.
Traces : une trace représente le trajet de bout en bout d’une requête à travers un système distribué. Lorsqu’une requête se déplace dans le système hôte, chaque opération effectuée sur celui-ci, appelée « unité logique », est encodée avec des données importantes concernant le microservice qui réalise cette opération.
En visualisant les traces, chacune comprenant une ou plusieurs unités logiques, vous pouvez suivre son parcours à travers un système distribué et identifier la cause d’un goulot d’étranglement ou d’une interruption de service.
Intégration des trois piliers : l’utilisation de ces classes de données n’est pas garante d’observabilité, en particulier si vous les exploitez indépendamment les unes des autres ou si vous utilisez des outils différents pour chaque fonction.
Au contraire, vous réussirez votre approche de l’observabilité en intégrant vos logs, métriques et traces au sein d’une solution unique. Ce faisant, vous saurez non seulement à quel moment les problèmes se produisent mais vous pourrez aussi passer à l’étape consistant à en comprendre la raison.
Pour atteindre l’observabilité, vous devez équiper vos systèmes et applications d’un outillage adéquat afin de recueillir les données de télémétrie appropriées. Vous pouvez créer un système observable en construisant vos propres outils, en utilisant un logiciel open source ou en achetant une solution d’observabilité commerciale. Quatre éléments sont généralement impliqués dans la mise en œuvre de l’observabilité :
Composants nécessaires à la mise en œuvre de l’observabilité
Que vous choisissiez de construire vos propres solutions ou d’utiliser des solutions open source ou commerciales, tous les outils d’observabilité doivent :
S’intégrer à vos outils actuels : si vos outils d’observabilité ne fonctionnent pas avec votre pile actuelle, vos efforts d’observabilité sont voués à l’échec. Assurez-vous qu’ils prennent en charge les structures et les langages de votre environnement, de votre plateforme de conteneur, de votre plateforme de messagerie et de tout autre logiciel stratégique.
Être faciles à utiliser : si vos outils d’observabilité sont difficiles à prendre en main ou à utiliser, ils ne seront pas intégrés aux workflows et votre initiative d’observabilité ne pourra pas décoller.
Fournir des données en temps réel : vos outils d’observabilité doivent fournir des informations pertinentes via des tableaux de bord, des rapports et des requêtes en temps réel pour permettre aux équipes de comprendre un problème, son impact et la façon de le résoudre.
Prendre en charge les techniques modernes de gestion des événements : des outils d’observabilité efficaces doivent être capables de recueillir toutes les informations pertinentes à partir de vos piles, technologies et environnements d’exploitation, de séparer les signaux utiles du bruit et d’ajouter suffisamment de contexte pour que les équipes puissent y répondre.
Visualiser les données agrégées : les outils d’observabilité doivent présenter les informations dans des formats faciles à interpréter, comme des tableaux de bord, des résumés interactifs et autres types de visualisations.
Fournir du contexte : lorsqu’un incident se produit, vos outils doivent fournir suffisamment de contexte pour vous permettre de comprendre comment les performances de votre système ont changé au fil du temps, si cette évolution est liée à d’autres changements dans le système, quelle est la portée du problème, et toute interdépendance du service ou du composant affecté. Sans le niveau de contexte que l’observabilité est capable de fournir, la réponse aux incidents est entravée.
Exploiter le machine learning : vos outils doivent inclure des modèles de machine learning qui automatisent le traitement et la sélection des données, afin que vous puissiez détecter et prendre en charge plus rapidement les anomalies et autres incidents de sécurité.
Apporter de la valeur métier : pensez bien à évaluer votre outil d’observabilité par rapport aux indicateurs importants pour votre entreprise, tels que la vitesse de déploiement, la stabilité du système et l’expérience client.
L’observabilité permet aux développeurs DevOps de comprendre l’état interne d’une application à tout moment et d’accéder à des informations plus précises sur les défaillances du système dans les environnements de production distribués. Quelques avantages clés :
Une meilleure visibilité : en raison de l’expansion des systèmes distribués, il est souvent difficile pour les développeurs de savoir quels services sont en production, si les performances des applications sont bonnes, qui est responsable de quel service ou à quoi ressemblait le système avant le déploiement le plus récent. L’observabilité apporte une visibilité en temps réel sur les systèmes de production, et cet atout contribue à éliminer ces obstacles.
De meilleures alertes : l’observabilité permet aux développeurs de détecter et de résoudre les problèmes plus rapidement, en offrant une visibilité plus approfondie qui leur permet de déterminer rapidement ce qui a changé dans le système, de déboguer ou de résoudre les problèmes et, le cas échéant, de déterminer quels problèmes ces changements ont entraînés.
Un meilleur workflow : l’observabilité permet aux développeurs de voir le parcours de bout en bout d’une requête ainsi que des données contextualisées pertinentes sur un problème particulier, ce qui rationalise le processus d’investigation et de débogage d’une application, optimisant ainsi ses performances.
Moins de temps passé en réunion : traditionnellement, les développeurs devaient tracer les informations par le biais d’entreprises et d’applications tierces pour savoir qui était responsable d’un service particulier ou à quoi ressemblait le système quelques jours ou semaines avant le déploiement le plus récent. Avec une observabilité efficace, ces informations sont faciles d’accès.
Accroître la vélocité des développeurs : l’observabilité rend la supervision et le dépannage plus efficaces en éliminant le principal point de friction pour les développeurs. Résultat : la rapidité de livraison augmente et le personnel de l’ingénierie dispose de davantage de temps pour proposer des idées innovantes pour répondre aux besoins de l’entreprise et de ses clients.
Aider les développeurs à travailler mieux et plus vite
L’observabilité est un atout pour les développeurs et les ingénieurs logiciels en raison de la visibilité qu’elle apporte sur l’ensemble de leur architecture, autant sur les applications et services tiers que sur les leurs. Cela leur permet non seulement de résoudre plus facilement les problèmes et même de les prévenir, mais aussi de mieux comprendre les performances du système et la manière dont elles façonnent une meilleure expérience pour le client. Les développeurs et les ingénieurs ont alors plus de temps à consacrer à des initiatives stratégiques qui profitent à toute l’entreprise.
Les équipes en profitent également parce que l’observabilité offre une vision commune de l’environnement et une compréhension plus complète de son architecture, de son état santé et de ses performances au fil du temps. L’observabilité permet aux développeurs, opérateurs, ingénieurs, analystes, chefs de projet et autres membres de l’équipe d’accéder aux mêmes informations sur les services, les clients et bien d’autres aspects du système. En outre, l’observabilité améliore la précision des examens post-incident, car toutes les parties peuvent examiner des enregistrements documentés du comportement du système en temps réel au lieu de reconstituer les événements à partir de sources disparates et cloisonnées. Les données, plutôt que les opinions, aideront vos équipes à comprendre pourquoi les incidents se sont produits, pour mieux prévenir et gérer les incidents futurs.
C’est toutefois l’entreprise qui pourrait en tirer le plus de bénéfices. L’observabilité vous permet d’apporter des modifications à vos applications et services sans compromettre la stabilité de vos systèmes, en vous donnant les outils pour comprendre ce qui fonctionne ou non, identifier les problèmes qui se posent et les réduire ou les résoudre rapidement. La combinaison de nouvelles fonctionnalités et d’une réduction des temps d’arrêt se traduit par des clients plus satisfaits, une meilleure expérience de l’utilisateur final et des revenus plus solides.
L’observabilité est une approche incontournable pour comprendre l’état de l’ensemble de votre infrastructure. Avec le cloud, les conteneurs, les microservices et bien d’autres technologies, les systèmes sont aujourd’hui plus complexes que jamais.
Tous ces outils ont indéniablement un impact positif, mais ils sont très difficiles à exploiter, à dépanner et à gérer. Le nombre de composants interdépendants démultiplie les problèmes, qui sont d’autant plus difficiles à détecter et corriger.
Heureusement, ces systèmes distribués produisent une multitude de données de télémétrie qui permettent de mieux comprendre leurs performances, si vous pouvez les exploiter. Des outils d’observabilité efficaces fournissent toute l’instrumentation et la puissance analytique dont vous avez besoin pour capturer et contextualiser les produits de votre système et fournir les informations nécessaires pour réussir dans le monde des systèmes distribués modernes.
Une erreur à signaler ? Une suggestion à faire ? Contactez-nous à l’adresse ssg-blogs@splunk.com.
Cette publication ne représente pas nécessairement la position, les stratégies ou l’opinion de Splunk.
La plateforme Splunk élimine les obstacles qui séparent les données de l'action, pour donner aux équipes d'observabilité, d'IT et de sécurité les moyens de préserver la sécurité, la résilience et le pouvoir d'innovation de leur organisation.
Fondée en 2003, Splunk est une entreprise internationale. Ses plus de 7 500 employés, les Splunkers, ont déjà obtenu plus de 1 020 brevets à ce jour, et ses solutions sont disponibles dans 21 régions du monde. Ouverte et extensible, la plateforme de données Splunk prend en charge les données de tous les environnements pour donner à toutes les équipes d'une entreprise une visibilité complète et contextualisée sur l'ensemble des interactions et des processus métier. Splunk, une base solide pour vos données.