On pourrait imaginer qu’il s’agit d’un nouveau terme à la mode inventé par le secteur des technologies, et pourtant le concept d’observabilité a été introduit il y a pratiquement un siècle dans le cadre de la théorie du contrôle et de l’ingénierie. Pour faire simple, on parle d’observabilité lorsque vous déduisez l’état interne d’un système de la simple observation de ses sorties externes.
Dans le contexte du développement logiciel et de l’infrastructure informatique moderne, un système hautement observable exposera suffisamment de données pour permettre aux opérateurs de se faire une idée précise de son intégrité. Lorsque l’observabilité est correctement implémentée, le système ne demande que très peu d’efforts aux équipes chargées des opérations pour comprendre son état interne.
L’observabilité n’est toutefois pas qu’une question de technologie. Il s’agit d’une pratique qui fait appel à un ensemble de processus et d’outils connexes afin d’offrir le niveau de visibilité souhaité sur le système. Dans cet article, nous passons en revue les principaux aspects de l’observabilité :
- Les composants clés de l’observabilité
- L’importance de l’observabilité
- La différence entre la surveillance et l’observabilité
- Les fonctionnalités indispensables d’une plateforme d’observabilité
Les composants clés de l’observabilité
La plupart des outils d’observabilité s’articulent autour de trois piliers : les logs, les indicateurs et les traces. Certains fournissent en outre une interface permettant de gérer un autre aspect de l’observabilité : les événements.
Indicateurs
Un indicateur est une valeur ou une mesure d’une caractéristique du système au cours d’une période donnée. Par définition, un indicateur est numérique et représente des données agrégées. Il peut, par exemple, s’agir de l’utilisation moyenne du processeur par minute et par serveur ou du nombre de requêtes renvoyant des erreurs par machine virtuelle Java (JVM, Java Virtual Machine) par jour. Les indicateurs peuvent être collectés à partir de l’infrastructure, des applications ou des répartiteurs de charge.
Logs
Un log est un fichier contenant des informations sur les éléments de la base de code auxquels une requête a accédé et sur les éventuels événements imprévus ou anormaux qu’a rencontrés l’application lors du traitement de cette requête. Certains logs, tels que les logs d’accès, servent à capturer les tentatives d’accès. Les logs peuvent être générés par l’application qui répond aux requêtes ou par le système d’exploitation (Syslog ou Windows Event Log, par exemple).
Traces
Les traces s’apparentent à des logs, mais fournissent aux opérateurs une visibilité sur les étapes du code. Par exemple, elles peuvent révéler à quelle méthode ou à quel service une requête donnée a recouru avant d’aboutir ou d’échouer. En raison de leur nature, les traces ne sont pas systématiquement enregistrées pour chaque requête, mais sont plutôt échantillonnées. La capture des traces dépend des fonctionnalités dont dispose votre plateforme d’observabilité ou votre bibliothèque.
En utilisant les indicateurs, un opérateur peut identifier si le fonctionnement du système est ralenti par rapport à la normale. Il peut ensuite exploiter les traces pour déterminer quelle partie du système est plus lente et si le problème doit être résolu. Pour une analyse plus approfondie, il peut également consulter les logs afin d’identifier les erreurs et les exceptions.
Événements
Parallèlement à ces trois piliers, les événements peuvent vous aider à améliorer l’observabilité de votre système. Par exemple, vous pouvez décider que chaque fois qu’un utilisateur possédant des droits d’administrateur exécute une tâche à privilège, le système enregistre un événement dans un outil d’observabilité. Les événements sont enregistrés pour des actions spécifiques, comme l’exécution d’une fonction, la mise à jour d’une entrée de base de données ou le renvoi d’une exception par le code. Analysés dans la durée, ils permettent de dégager des schémas. À titre d’alternative, vous pouvez également utiliser des logs structurés en tant qu’événements de bas niveau.
L’observabilité est un élément clé de la continuité de vos systèmes les plus critiques, notamment :
- Applications
- Conteneurs
- Infrastructure
- Réseaux
- Sources de données
- Nœuds d’edge computing
L’investissement dans l’observabilité doit être proportionnel à la criticité du composant pour le système global.
Pourquoi les entreprises ont-elles besoin de l’observabilité ?
L’observabilité n’est pas une finalité en soi. Il s’agit plutôt d’une pratique qui permet de satisfaire les exigences de disponibilité et de fiabilité de l’entreprise. Son but est de réduire le délai moyen de réparation (MTTR, Mean Time to Repair) et d’augmenter le délai moyen entre deux défaillances (MTBF, .Mean Time Between Failures). Cela n’est toutefois possible que si les opérateurs sont en mesure de résoudre rapidement les problèmes de production, d’identifier les problèmes avant qu’ils ne se transforment en incidents et d’appliquer des mesures proactives.
Les équipes chargées des opérations utilisent l’observabilité pour bénéficier d’une visibilité complète sur les systèmes qu’elles gèrent, tandis que les équipes SecOps recourent aux outils d’observabilité pour mettre au jour les compromissions ou les activités malveillantes.
D’un point de vue technique, l’observabilité permet aux développeurs d’identifier les bugs de manière précoce dans le cycle de développement, ce qui améliore la fiabilité des nouvelles versions logicielles. Elle encourage l’innovation tout en maintenant la qualité des logiciels et en accélérant les délais de publication. Les équipes de support ont également tout à gagner de l’implémentation de l’observabilité, en particulier lorsqu’elles utilisent la surveillance des utilisateurs réels (RUM, Real User Monitoring), qui conduit à une meilleure collaboration entre les équipes et à un meilleur support pour les clients.
Les clients bénéficient non seulement de produits plus performants, mais aussi d’un service plus fiable, car les ingénieurs et les équipes de support sont en mesure d’identifier les problèmes et d’appliquer des correctifs de manière proactive. Un niveau élevé d’observabilité permet également d’exposer les « inconnues ignorées », ces problèmes dont les équipes n’ont même pas conscience.
Surveillance et observabilité
La surveillance et l’observabilité sont deux concepts distincts qui peuvent toutefois porter à confusion.
La surveillance désigne le fait de contrôler en continu les indicateurs et les logs d’un système afin d’évaluer son intégrité ou de déterminer si une intervention manuelle est requise. Elle consiste également à mesurer certains composants pris isolément (serveur, réseau ou base de données, par exemple).
L’observabilité a quant à elle une portée plus large. Elle met en corrélation toutes les données collectées, y compris celles issues de la surveillance, pour désigner l’endroit précis où se situe le problème. En d’autres termes, la surveillance vous dit qu’il y a un problème, et l’observabilité vous indique où il se situe. Bien que sensiblement différents, ces deux concepts vont néanmoins de pair dans la mesure où ils s’appuient sur les sorties du système.
Comment choisir une plateforme d’observabilité ?
Une plateforme d’observabilité digne de ce nom est un atout pour votre entreprise. Elle peut vous aider à atteindre vos objectifs de sécurité, de fiabilité et de disponibilité. Il est donc essentiel de faire le bon choix.
Les systèmes informatiques modernes sont complexes. La plupart sont distribués, potentiellement multicloud ou hybrides, et requièrent un haut niveau de disponibilité. Ils sont également souvent la cible d’attaques malveillantes.
Un système distribué aussi complexe peut générer des volumes gigantesques de données observables. Une plateforme d’observabilité efficace doit être capable de récupérer les données de différentes sources, de les stocker, de les passer au crible en temps voulu et de produire une vue d’ensemble des données qui soit porteuse de sens. Elle doit, en outre, être à même d’isoler le signal, c’est-à-dire les événements qui présentent un intérêt, du bruit. Elle doit également mettre les données en corrélation et les enrichir afin de permettre aux opérateurs d’identifier les anomalies et les tendances.
Vous pouvez vous appuyer sur la liste ci-dessous pour évaluer la pertinence d’une plateforme d’observabilité. La plateforme choisie doit pouvoir :
- S’intégrer à tous vos systèmes, pour chacune de vos piles d’applications, soit de manière native, soit en recourant à des plug-ins fiables
- S’installer de manière automatisée et reproductible
- Capturer des données en temps réel depuis tous les composants cibles, et les stocker, les indexer et les mettre en corrélation de manière pertinente et économique
- Générer une vue d’ensemble de votre système complexe en temps réel
- Offrir une traçabilité afin d’identifier l’endroit précis où le problème se situe et la manière dont il est survenu, en distinguant les informations pertinentes du bruit
- Fournir des tendances historiques et produire des rapports en cas d’anomalies
- Afficher toutes les données contextuelles pertinentes pour chaque alerte ou rapport
- Mettre à disposition une interface utilisateur conviviale à partir de laquelle les différentes équipes peuvent créer des rapports agrégés personnalisés
Journalisez toutes vos données et répondez à toutes les questions – gratuitement
Falcon LogScale Community Edition (anciennement Humio) offre une plateforme moderne et gratuite de gestion des logs pour le cloud. Exploitez l’ingestion des données de streaming pour bénéficier d’une visibilité instantanée sur les systèmes distribués, de même que détecter et résoudre les incidents.
Falcon LogScale Community Edition, disponible instantanément et gratuitement, inclut les fonctionnalités suivantes :
- Ingestion de jusqu’à 16 Go de données par jour
- Durée de rétention de 7 jours
- Aucune carte de crédit n’est requise
- Accès continu sans période d’essai
- Journalisation sans index, alertes en temps réel et tableaux de bord en direct
- Accès à notre place de marché et à nos packages, y compris aux guides de création de nouveaux packages
- Formation et collaboration avec une communauté active