Resumen
Jaeger es un sistema de software open source que sirve para detectar operaciones entre los servicios distribuidos. Se utiliza para supervisar entornos complejos de microservicios y solucionar los problemas asociados a ellos.
¿Qué es el rastreo de entornos distribuidos?
El rastreo de entornos distribuidos es una forma de ver y comprender toda la cadena de eventos en una interacción compleja entre microservicios.
El desarrollo moderno de software nativo de la nube se basa en los microservicios, es decir, en servicios independientes que ofrecen una función central distinta. Cuando un usuario realiza una solicitud en una aplicación, muchos servicios individuales responden para generar cierto resultado.
Una sola llamada en una aplicación puede generar la respuesta de muchos servicios diferentes que interactúan entre sí.Para que los desarrolladores y los ingenieros puedan aislar un problema cuando se genera una falla o cuando una solicitud se ejecuta con lentitud, es necesario realizar un seguimiento de todas las conexiones.
Ahí es donde interviene el rastreo de entornos distribuidos. Normalmente, se ejecuta como parte de una malla de servicios, que es una forma de gestionar y observar los microservicios.
Jaeger utiliza el rastreo de entornos distribuidos para seguir la ruta de una solicitud a través de los diferentes microservicios. En lugar de adivinar, podemos observar una representación visual de los flujos de la llamada.
La información organizada sobre las operaciones es útil para la depuración y la optimización de los servicios. Jaeger incluye herramientas para supervisar las operaciones de los entornos distribuidos, optimizar el rendimiento y la latencia, y realizar un análisis de la causa raíz (RCA), que es un método para la resolución de problemas.
Comunidad open source de Jaeger
Dado que Jaeger es un proyecto open source, se beneficia de una comunidad de cientos de colaboradores. Jaeger se basa en el uso de herramientas de instrumentación y de API de OpenTracing que no dependen de ningún proveedor en particular.
En 2015, la empresa de transporte compartido Uber desarrolló Jaeger como un proyecto open source. En 2017, la fundación Cloud Native Computing Foundation (CNCF) lo aceptó como un proyecto "en incubación" y, en 2019, pasó a estar dentro de la categoría de proyectos "graduados".
Terminología y elementos de Jaeger
Jaeger presenta las solicitudes de ejecución como rastreos. Un rastreo muestra la ruta de ejecución/datos que se genera a través de un sistema.
Este se compone de uno o varios intervalos, que son unidades lógicas de trabajo en Jaeger. Todos los intervalos incluyen el nombre de la operación, la hora de inicio y la duración. Los intervalos pueden agruparse y ordenarse.
Jaeger incluye varios elementos que funcionan en conjunto para recopilar, almacenar y visualizar intervalos y rastreos.
Jaeger Client incluye implementaciones específicas del lenguaje de la API de OpenTracing para el rastreo de entornos distribuidos. Estas pueden utilizarse de forma manual o con varios marcos open source.
Jaeger Agent es un daemon de red que está al tanto de los intervalos que se envían a través del Protocolo de datagramas de usuario. El agente debe colocarse en el mismo host que la aplicación instrumentada. Por lo general se implementa mediante un sidecar en entornos de contenedores, como Kubernetes.
Jaeger Collector recibe los intervalos y los coloca en una cola para procesarlos.
Los recopiladores requieren un backend de almacenamiento permanente, así que Jaeger también cuenta con un mecanismo con capacidad de conexión para el almacenamiento de los intervalos.
Query es un servicio que recupera los rastreos del almacenamiento.
Jaeger Console es una interfaz de usuario que le permite visualizar los datos que se obtienen del rastreo de entornos distribuidos.
Jaeger y Red Hat
Jaeger se instala de forma predeterminada como parte de Red Hat® OpenShift® Service Mesh, que incluye una implementación de Istio (una malla de servicios open source).
Los beneficios de esta implementación de rastreo de entornos distribuidos son muchos y variados. Jaeger se integra con Kiali, una consola con capacidad de observación para Istio. El backend de Jaeger está diseñado para ofrecer mayor escalabilidad sin ningún punto único de falla. Jaeger puede conectar los datos provenientes de los distintos elementos para crear un rastreo completo e integral. También es compatible con las versiones anteriores de Zipkin.