Jaeger es un sistema distribuido de traceo (inspirado por Dapper y OpenZipkin) creado por Uber y publicado como open-source.

Se puede usar para monitorear arquitecturas basadas en microservices, ya que ofrece:

· Propagación de contexto distribuida

· Monitorización de transacciones distribuidas

· Análisis de la causa raíz

· Análisis de la dependencia entre servicios

Jaeger ofrece librerías en varios lenguajes:

Ofrece un UI en Javascript (con React), su backend está construido en Go y soporta como storage ElasticSearch y Cassandra 3.x (en el futuro soportarán otros storages).

En su UI podemos ver:

Traces View:

Y Traces Detail View:

Jaeger tiene 3 componentes:

· Jaeger-agent

· Jaeger-collector

· Jaeger-query

En la arquitectura:

Que:

· Agent: daemon de red que escucha los spans enviados a través de UDP, que batchea y envía al colector. Está diseñado para ser implementado en todos los hosts como un componente de infraestructura. El agente abstrae el enrutamiento y el descubrimiento de los colectores lejos del cliente.

· Colector: El colector recibe trazas de agentes Jaeger y las pasa a través de un pipeline de procesamiento. Actualmente el pipeline valida trazas, los indexa, realiza cualquier transformación y finalmente los almacena. El almacenamiento es un componente conectable que actualmente soporta Cassandra y ElasticSearch.

· Query: Query es un servicio que recupera trazas del almacenamiento y aloja una interfaz de usuario para mostrarlas.