VT2018 Zipkin
Auteur
- Nom : OZENDA Thomas
- Sujet : Dapper & Zipkin
Résumé
Dans les architectures en microservices, obtenir des métriques sur la latence, la perte éventuelle de paquets ou encore d'autres choses, est primordial. Toutefois, une problématique se pose rapidement : Comment pouvoir exploiter facilement les données de logs pour en tirer des leçons. C'est le principe de Zipkin, un "distributed tracing system", qui prends en charge ce travail d'extraction de données pour fournir des métriques concrètes.
Abstract
In micro-service architectures, obtaining metrics on latency, possible packet loss or other things is essential. However, a problem quickly arises: How to easily use log data to learn from it. It is the Zipkin principle, a "distributed tracing system", that supports this data extraction work to provide concrete metrics.
Synthèse
Introduction
Les problématiques rencontrées dans les architectures microservices nécessitent de pouvoir mesurer les latences au sein de celles ci. Zipkin, basé sur Dapper (issu d'un article académique de Google) répond à cette problématique en fournissant un serveur qui va servir à collecter les paquets émis par les microservice à chaque entrée et sortie de paquet. Ces paquets vont permettre plusieurs choses à Zipkin : pouvoir tracer une timeline pour chaque requete, et aussi de pouvoir tracer un "plan" des microservices. Ceci peut être trés utile dans le sens où nous allons pouvoir voir où les requetes se perdent, dans quel microservices.
Fonctionnement
La première étape est de récupérer, puis lancer le serveur zipkin, qui va servir à collecter les mesures.
curl -sSL https://zipkin.io/quickstart.sh | bash -s
java -jar zipkin.jar
On utilise ici, la version "java" du serveur.
Le serveur se lance par défaut sur le port 9411.
L'idée est ensuite de lancer les microservices. En ce qui concerne JHipster, on peut lancer le système grâce à Maven et au profil "Zipkin" comme suit :
mvn -Pzipkin
En ce qui me concerne, j'ai choisi d'utiliser une démo préparée par Zipkin, trouvable à ce lien : https://github.com/openzipkin/brave-webmvc-example
Elle se lance facilement avec 2 commandes :
mvn jetty:run -Pfrontend
et
mvn jetty:run -Pbackend
Une fois que l'on a accédé à ce front (qui est sur le port 8081), des requetes vont être envoyés aux backend. On va ainsi pouvoir observer ces requêtes sur le ZipkinUI, en http://localhost:9411/
Ce système ne contient que 2 microservices, mais il permet d'imaginer ce que cela pourrait donner sur une architecture plus développée.