Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Info

Disponible desde versión Available from version 5.1.0 de of Onesait Platform (Survivor).

Table of Contents

Objetivo

Con el objetivo de incorporar nuevas capacidades en Onesait Platform en la construcción de MSA (Arquitectura de Microservicios) hemos incorporado la funcionalidad de Tracing distribuido.

Esta funcionalidad permite trazar una petición desde que se genera hasta el final, lo cual es importante en una arquitectura de este tipo en el que una petición puede pasar por varios microservicios y módulos.

...

Además se incluye una UI para poder visualizar de forma sencilla la petición completa, lo que puede ayudarnos a diagnosticar problemas, ver cuellos de botella, tiempos largos,…

...

¿Cómo se ha soportado en Plataforma?

En la imagen se muestra un ejemplo de Tracing distribuido en el que intervienen 2 microservicios y varios componentes de Plataforma.

...

Como se en la imagen la solución incluye:

  • Open Telemetry Collector para recolectar las trazas de todos los componentes (de forma automática)

  • Jaeger Collector para convertir a trazar explotables

  • DB OpenSearch para almacenar Tracing)

  • Jaeger UI para visualizar tracing

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. 

Conceptos básicos

...

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. 

...

Goal

Aiming to incorporate new capabilities in Onesait Platform in the construction of MSA (Microservices Architecture), we have incorporated the distributed Tracing functionality.

This functionality allows a request to be traced from the moment it is generated, to its end, which is important in an architecture of this type in which a request can go through several microservices and modules.

...

In addition, a UI is included to be able to easily view the complete request, which can help diagnose problems, see bottlenecks, long times,...

...

How has this been supported on the Platform?

The image shows an example of distributed Tracing involving two microservices and several Platform components.

...

As shown in the image, the solution includes:

  • Open Telemetry Collector to automatically collect traces from all components.

  • Jaeger Collector to convert to exploitable trace.

  • DB OpenSearch to store tracing.

  • Jaeger UI to visualize tracing.

For both external and internal platform elements, the Open Telemetry agent or SDK is used for instrumentation, and to obtain the traces and send these to the Otel collector.

Basic concepts

  • Spans: Individual unit of work. These are closed time intervals, for example, a call to a service, or to a database.

  • Traces: Set of spans in a temporal sequence triggered by an initial action.

  • Scope: Formalizes where each span starts and ends.

  • Tags: Key value pairs with information that are used for queries, filters, and traces.

Open Telemetry

https://opentelemetry.io/ es un estándar en este ámbito y ofrece un conjunto de SDK, API y herramientas estandarizadas e independientes del proveedor para ingerir, transformar y enviar datos a un back-end de Observabilidad is a standard in this field, offering a set of standardized, vendor-neutral SDKs, APIs, and tools to ingest, transform, and push data to an Observability back-end.

Jaeger

Jaeger tracing recoge las trazas de Open Telemetry a través de su colector, lo almacena en Open Search y nos permite exportarlo a través de la UI de Jaeger, integrada en el Control Panel.

Desde la UI 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. 

...

collects the Open Telemetry traces through its collector, stores it in Open Search and allows to export it through the Jaeger UI, integrated into the Control Panel.

From the UI, you can make searches based on the service that has initiated the call to see the entire trace and check which components have navigated through, the elapsed time, and see information on each of these spans.

...