Hoy vamos a ampliar nuestro ejemplo de Apache Camel y vamos a incluir Jaeger. Pero antes de ver como debemos hacerlo, explicaremos un poco que es OpenTraicing y Jaeger.
OpenTracing es, como ellos mismos se definen, una APIs e instrumentación para el rastreo distribuido, neutrales en cuanto a los proveedores. Y aunque la creo Uber ahora es open-source y tiene importantes compañías detrás.
OpenTracing quiere formar un lenguaje común en torno a lo que es una traza y cómo manejarla en nuestras aplicaciones. Y para entender su funcionamiento debemos entender antes varios conceptos:
- Distributed Tracing: Es un método utilizado para perfilar y supervisar las aplicaciones. Nos ayuda a señalar dónde ocurren los fallos y qué es lo que causa el mal funcionamiento.
- Span: Es el principal componente de una traza distribuida, que representa una unidad individual de trabajo realizada en un sistema distribuido. Estos encapsulan información de la aplicación.
- Traza: Es un gráfico acíclico de Span.
- Tracer: Es la implementación de la API que recolectará los Span y los publicará.
Una traza se podría representar así:
Y si tenemos en cuenta el tiempo, con este otro gráfico:
Sabiendo esto, ya nos quedará más claro cuando digamos que Jaeger será un Tracer que nos permitirá recolectar la información de las trazas de nuestra aplicación y visualizarlas en un interfaz gráfica propia.
Con lo cual ya podremos incorporar Jaeger a nuestro docker compose con la siguiente instrucción:
Una vez arranquemos, ya podremos acceder a su interfaz gráfica a través de la URL http://localhost:16686
Una vez que lo tenemos preparado, vamos a configurar nuestra aplicación. Esto lo podemos hacer con tres sencillos pasos:
- Añadir la librería camel-opentracing-starter. El cual nos auto configurará nuestra aplicación Spring Boot para el uso de Open Tracing
- Añadir la anotación @CamelOpenTracing en la clase principal. La cual habilitará el uso de Open Tracing.
- Añadir una implementación de OpenTracing, en este caso la Jaeger. A través de la librería io.jaegertracing:jaeger-client.
No hay comentarios:
Publicar un comentario