Présentation
Jaeger est un logiciel Open Source qui permet de tracer les transactions entre plusieurs services distribués. Il surveille les environnements de microservices complexes et permet d'en résoudre les problèmes.
Qu'est-ce que le traçage distribué ?
Le traçage distribué est un moyen d'observer et de comprendre l'ensemble de la chaîne d'événements lors d'une interaction complexe entre des microservices.
Le développement moderne d'applications cloud-native repose sur les microservices, c'est-à-dire des services indépendants qui fournissent chacun une fonction essentielle différente. Lorsqu'un utilisateur lance une requête dans une application, de nombreux services individuels répondent pour produire un résultat.
Dans une application, une requête unique peut appeler des dizaines de services différents qui interagissent les uns avec les autres.Dans de telles conditions, comment les développeurs et les ingénieurs peuvent-ils isoler un problème en cas de panne ou lorsqu'une requête s'exécute au ralenti ? Ils ont besoin de garder une trace de toutes les connexions.
C'est là qu'intervient le traçage distribué. Il est souvent exécuté au sein d'un Service Mesh, qui est un moyen de gérer et d'observer les microservices.
Jaeger utilise le traçage distribué pour suivre le chemin d'une requête au travers des différents microservices. Comme cette solution offre une représentation visuelle des flux d'appels, elle élimine toute supposition.
Que ce soit pour la résolution des problèmes ou l'optimisation, il est utile de disposer d'informations bien organisées. Jaeger inclut des outils de surveillance des transactions distribuées, d'optimisation des performances et de la latence, ainsi que d'analyse de l'origine des problèmes, une méthode de résolution des problèmes.
La communauté Open Source Jaeger
En tant que projet Open Source, Jaeger s'appuie sur une communauté de centaines de contributeurs. Jaeger repose sur des API OpenTracing et des instruments qui ne dépendent d'aucun fournisseur.
C'est l'entreprise de covoiturage Uber qui a développé le projet Open Source Jaeger en 2015. Il a été accepté en 2017 comme projet d'incubation par la Cloud Native Computing Foundation (CNCF) et a été approuvé en 2019.
Terminologie et composants de Jaeger
Jaeger présente des requêtes d'exécution sous la forme de traces. Une trace montre le chemin des données ou de l'exécution à travers un système.
Une trace se compose d'au moins un intervalle. Un intervalle est une unité logique de travail dans Jaeger. Chaque intervalle comporte le nom de l'opération, l'heure de début et la durée. Les intervalles peuvent être imbriqués et classés.
Jaeger inclut différents composants qui agissent ensemble pour collecter, stocker et visualiser les intervalles et les traces.
Le client Jaeger comporte des modes d'exécution spécifiques de l'API OpenTracing pour le traçage distribué en fonction du langage. Ils peuvent être utilisés manuellement ou avec différentes structures Open Source.
L'agent Jaeger est un démon réseau qui écoute les intervalles envoyés via le protocole UDP (User Datagram Protocol). Cet agent doit être placé sur le même hôte que l'application instrumentée. Il est généralement mis en place via un proxy sidecar dans des environnements conteneurisés comme Kubernetes.
Le collecteur Jaeger reçoit les intervalles et les place dans la file d'attente en vue de leur traitement.
Les collecteurs ont besoin d'un système de stockage back-end persistant. Jaeger dispose donc également d'un module de stockage des intervalles.
Query est un service qui récupère les traces depuis l'espace de stockage.
La console Jaeger est une interface utilisateur qui vous permet de visualiser toutes vos données de traçage distribué.
Jaeger et Red Hat
Jaeger est installé par défaut avec la solution Red Hat® OpenShift® Service Mesh qui inclut la mise en œuvre d'Istio, un Service Mesh Open Source.
La mise en œuvre du traçage distribué offre plusieurs avantages. Jaeger est compatible avec Kiali, une console d'observation pour Istio. Le back-end de Jaeger est conçu pour être hautement évolutif sans point individuel de défaillance. Jaeger peut relier des données de différents composants pour créer une trace complète de bout en bout. Jaeger est également rétrocompatible avec Zipkin.