Table of Contents |
---|
Introducción
El objetivo de esta funcionalidad es disponer de Trazas distribuidas en Plataforma, lo que nos permitirá rastrear una petición desde que entra al sistema hasta que se procesa.
La petición traceará desde la entrada, que puede ser un módulo de plataforma (como el Api Manager) o un microservicio gestionado por plataforma incluyendo todos los módulos de plataforma.
...
Objetivos de la funcionalidad
Con esta nueva funcionalidad añadida a la Onesait Platform, se pretende:
Monitorear transacciones distribuidas.
Poder resolver problemas optimización de rendimiento y latencia.
Análisis para obtener la raíz del problema.
Detección de anomalías.
Análisis de dependencia de servicios.
Propagación de contexto distribuido.
...
¿Cómo se ha soportado?
...
Tanto para los elementos externos como internos de plataforma se utiliza el agente o el SDK de Open Telemetry para la instrumentación, obtener las trazas y enviarlas al colector Otel.
¿Qué es OTel?
El objetivo de Open Telemetry https://opentelemetry.io/ es proporcionar un conjunto de SDK, API y herramientas estandarizadas e independientes del proveedor para ingerir, transformar y enviar datos a un back-end de Observabilidad.
Desde el colector de trazas de OTel se transmiten al colector Jaeger.
Elementos básicos de Tracing
Spans: Unidad individual de trabajo, son intervalos temporales cerrados por ejemplo una llamada a un servicio, o a una base de datos.
Trazas: Conjunto de spans en una secuencia temporal desencadenadas por una acción inicial.
Scope (alcance): Formaliza donde se inicia y termina cada span.
Tags: Pares clave valor con información que se utilizan para consultas, filtros y trazas .
¿Qué es Jaeger?
Jaeger (Jaeger tracing) se utiliza para monitorear y solucionar problemas de sistemas distribuidos basados en microservicios, que incluyen:
Propagación de contexto distribuida
Monitoreo de transacciones distribuidas
Análisis de raíz de la causa
Análisis de dependencia del servicio
Optimización de rendimiento/latencia
Entre el colector de Jaeger y la base de datos open search Open Search se puede utilizar Kafka como una cola persistente intermediaria.
La información sobre las trazas y spans generadas en los microservicios puede consultarse utilizando la IU de Jaeger integrada en el control panel de plataforma, desde esta podemos hacer búsquedas en función del servicio que ha iniciado la llamada para ver toda la traza y comprobar porque componentes ha navegado, el tiempo transcurrido e información de cada uno de estos spans.
...
Un poco de información para conocer los elementos básicos de Tracing
...
Trazas: Conjunto de spans en una secuencia temporal desencadenadas por una acción inicial.
Scope (alcance): Formaliza donde se inicia y termina cada span.
Tags: Pares clave valor con información que se utilizan para consultas, filtros y trazas .
Ejemplo
Para aclarar un poco estos conceptos se muestra como podrían interactuar dos micro servicio 2 microservicios y estos con plataforma y como se verían las trazas simplificándolo un poco.
...
Se realiza una solicitud al micro servicio microservicio A, este a su vez realiza una solicitud al micro servicio microservicio B.
El micro servicio microservicio B para confeccionar una respuesta tiene que realizar dos llamadas al api manager API Manager de plataforma y esta también realiza solicitudes al Semantic Inf brokerBroker
Se puede apreciar que la traza es el conjunto de spans involucrados en todo el proceso a traves través del tiempo y como se pueden identificar cada span con el servicio al que pertenece y en el orden que se han ejecutado.
...
Un ejemplo real
...
Para este ejemplo se ha creado un micro servicio (demoservice) de Java con Spring Boot.
Se ha creado una entidad customer Customer, que almacena información de clientes y se han insertado unos cuantos registros.
...