¿Qué son los rastreos?

Definición de trazados distribuidos

Los trazados distribuidos son un tipo de datos de telemetría que proporcionan un registro de nivel de código (transacción) integral de cada solicitud de usuario a través de toda la ruta de acceso de una aplicación.

El trazado distribuido ofrece visibilidad sobre el estado de una aplicación, las dependencias y las interacciones entre los componentes del sistema. Es un componente esencial de observabilidad y monitoreo de rendimiento de aplicaciones (APM) en entornos nativos del cloud.

Los rastreos ayudan a los ingenieros de confiabilidad del sitio (SRE) y a los equipos de ITOps y de DevOps a comprender el movimiento y el comportamiento de extremo a extremo de las solicitudes a través de distintos microservicios dentro de un sistema. Al usar los rastreos, los desarrolladores pueden encontrar cuellos de botella y otros problemas de código que afectan el rendimiento y la experiencia del usuario, y optimizarlos para mejorar la eficiencia.

Trazado distribuido frente a trazado tradicional

El trazado distribuido es un método para observar las solicitudes a medida que viajan a través de entornos distribuidos.

Por diseño, la arquitectura distribuida implica una compleja red de servicios. Una solicitud recorre muchos microservicios, cada uno realiza una tarea específica. Como resultado, rastrear una solicitud en un sistema distribuido es una tarea compleja que sería imposible con el trazado tradicional utilizado para aplicaciones monolíticas.

El trazado tradicional proporciona información limitada y no es escalable. El método de trazado tradicional usa muestras aleatorias de rastreos de cada solicitud, lo que da como resultado rastreos incompletos.


¿Por qué es importante el rastreo para el desarrollo de aplicaciones?

El trazado es importante para el desarrollo de aplicaciones, ya que permite a los ingenieros de software seguir una solicitud a través de numerosos microservicios. La capacidad de realizar un seguimiento visual de cada paso hace que el trazado sea valioso. Ayuda a corregir errores y problemas de rendimiento al solucionar errores para diferentes aplicaciones.

El rastreo ayuda a:

  • Identificar los problemas con más rapidez: En un sistema distribuido, la resolución de problemas es mucho más difícil que en un monolito. El trazado distribuido ayuda a identificar la causa raíz y la ubicación de los errores de la aplicación con más rapidez, lo que minimiza las interrupciones.
  • Simplificar la depuración: El trazado proporciona una vista completa de cómo interactúan las solicitudes con los diferentes microservicios, lo que ayuda en el proceso de depuración, incluso, en la arquitectura más compleja.
  • Mejorar la colaboración: En un entorno distribuido, diferentes equipos suelen trabajar en distintos servicios. Un rastreo identifica dónde se produjo el problema y dirige al equipo responsable de solucionarlo.
  • Acelerar el desarrollo: Con el trazado, los desarrolladores pueden obtener información valiosa sobre el comportamiento del usuario, optimizar el rendimiento de las aplicaciones y agilizar los esfuerzos para lanzar actualizaciones y nuevos despliegues.

Cómo funciona el trazado

El trazado funciona mediante la recopilación, el análisis y la visualización de datos de telemetría de una solicitud a medida que viaja a través de diferentes servicios en una arquitectura de microservicios.

Antes de generar datos de rastreo (y otros datos de telemetría), debe instrumentarse una aplicación. La instrumentación es un proceso de agregar código para hacer un seguimiento de los datos de rastreo. Una plataforma open source como OpenTelemetry (OTel) proporciona SDK, API y otras herramientas independientes del proveedor para instrumentar la arquitectura de microservicios.

Ejemplo de implementación de OpenTelemetry y cómo recibir, procesar y exportar datos de telemetría

Recopilación de datos

Una herramienta de trazado distribuido integral comienza a recopilar datos cuando un usuario inicia una solicitud. La información de identificación (ID de rastreo) se agrega a cada solicitud a medida que ingresa al sistema. Esta información de identificación se transmite a medida que se mueve a través de distintos servicios y componentes.

También se registra cada paso durante el recorrido de la solicitud. El inicial se llama intervalo principal, mientras que los siguientes se llaman intervalos secundarios. Cada intervalo secundario se codifica con el ID de rastreo original, un ID de intervalo único, marca de tiempo, estado y otros metadatos relevantes. Los intervalos se organizan jerárquicamente, siguiendo el recorrido por los servicios de todo el entorno.

Para APM, instrumentar una aplicación y habilitar la recopilación de rastreo permite recopilar métricas de aplicaciones de trazado, o valores numéricos, que se pueden usar para monitorear el rendimiento de la aplicación. Esto incluye lo siguiente:

  • Tasa de solicitudes: la cantidad de solicitudes por segundo
  • Tasa de errores: la cantidad de solicitudes que fallan
  • Latencia: el tiempo que se tarda en responder a una solicitud
  • Duración — el tiempo que tarda la solicitud
  • Rendimiento: el volumen de solicitudes que una aplicación puede manejar en un período determinado

Análisis de rastreo

Una vez que se completa la solicitud y el rastreo recopila todos los datos, se agregan los datos. Con los datos de intervalos, como identificadores de seguimiento, marcas de tiempo y otra información contextual, los desarrolladores pueden localizar cuellos de botella de recursos, problemas de latencia o errores.

Monitoreo y visualización

El seguimiento de las métricas de la aplicación puede ayudar a monitorear el rendimiento de una aplicación. Cuando cambian y si lo hacen, los equipos de SRE y DevOps pueden entrar en acción.

Con la inteligencia artificial (AI) o el machine learning, el proceso de monitoreo puede automatizarse parcialmente, y los ingenieros reciben alertas sobre posibles problemas antes de que ocurran. Un asistente de AI también puede ayudar a profundizar en el análisis de rastreos y explorar rápidamente los problemas subyacentes correlacionando los datos de observabilidad de otras fuentes.

Finalmente, todos los intervalos se visualizan en un gráfico de cascada, con un intervalo principal en la parte superior y los intervalos secundarios anidados debajo. Este gráfico es una vista panorámica de lo que una aplicación estaba haciendo mientras intentaba responder a una solicitud. De este modo, los ingenieros pueden comprender qué partes de un sistema distribuido están teniendo problemas de rendimiento, errores o cuellos de botella.
illustrated-screenshot-what-is-traces_diagram-2-observability-waterfall-nospace.png


Estándares abiertos para el rastreo en OpenTelemetry

OpenTelemetry es un marco de trabajo de observabilidad open source que consta de herramientas, API y SDK. OTel permite a los SRE, DevOps y equipos de IT instrumentar, recopilar y exportar datos de telemetría, incluidos los rastreos, en un formato único y unificado para su análisis.

The Cloud Native Computing Foundation (CNCF) desarrolló OTel para proporcionar protocolos estandarizados, esquemas y herramientas para recopilar y enrutar datos de telemetría a plataformas de observabilidad. Con un fuerte enfoque en los rastreos, OTel es el resultado de una fusión de dos proyectos anteriores de CNCF, OpenTracing y OpenCensus. Se diseñaron para establecer un estándar único para la instrumentación de código y el enrutamiento de datos de telemetría a un backend de observabilidad.

Desde 2019, cuando se combinaron los dos proyectos, tanto las comunidades open source como las empresas han adoptado OTel porque proporciona un formato único y unificado de instrumentación y está preparado para el futuro.

Antes de OpenTelemetry y sus estándares abiertos, los datos de observabilidad solían ser incoherentes y difíciles de correlacionar. En un entorno distribuido, DevOps e IT tuvieron que instrumentar diferentes bibliotecas que respaldaran las diversas aplicaciones y servicios de su organización, a través de varios lenguajes de programación. A menudo, cada instrumentación de código, APM o herramienta de rastreo era propietaria, lo que creaba muchos problemas para el trazado distribuido. Cuando no existe una norma ni una herramienta única para recopilar (y exportar) rastreos de todas las aplicaciones, el trabajo de los ingenieros de encontrar problemas de rendimiento o errores se convierte en un desafío.

Por otro lado, con OTel, los ingenieros no necesitan volver a instrumentar el código para hacer un seguimiento de los datos de rastreo de diferentes servicios, ni tienen que redirigir manualmente los datos de telemetría con cada cambio. Solo hay un marco de trabajo open source para la observabilidad y las herramientas de monitoreo que cumplen con OpenTelemetry.

A medida que surjan nuevas tecnologías, como integraciones más profundas con AI en detección de anomalías y AI generativa, OpenTelemetry seguirá proporcionando un marco de trabajo de integración único y compatible para el trazado distribuido integral.

Los estándares de OTel para el rastreo incluyen:

  • Un único conjunto de API y convenciones para recopilar datos de rastreo
  • El intervalo se define como una unidad núcleo de trazado
  • Convenciones semánticas para nombrar los intervalos y agregar atributos
  • Un mecanismo de contexto para vincular intervalos entre diferentes servicios
  • Soporte para diferentes lenguajes de programación

Obtén más información sobre OpenTelemetry con Elastic


Rastreos, métricas, logs y perfiles

Los datos de telemetría (logs, métricas y rastreos) proporcionan observabilidad completa del comportamiento de aplicaciones, servidores, servicios o bases de datos en un entorno distribuido. También conocidos como los tres pilares de la observabilidad, los logs, las métricas y los rastreos crean un registro completo y correlacionado de cada solicitud y transacción del usuario.

Cada uno de los tres tipos de datos proporciona información esencial sobre el entorno. Juntos, ayudan a los equipos de DevOps, IT y SRE a realizar un seguimiento del rendimiento de todo el sistema en tiempo real e históricamente.

Rastreos

Los rastreos son registros detallados del recorrido de una solicitud a través de todo el sistema distribuido para proporcionar contexto. Al reunir datos aislados y registrar cada acción de un usuario, los rastreos ayudan a los ingenieros a descubrir cuellos de botella, y a depurar y monitorear aplicaciones que usan múltiples aplicaciones, así como a entender las dependencias e interacciones entre los componentes del sistema.

Logs

Los archivos de logs son los registros con marca de tiempo de eventos y mensajes del sistema. Normalmente, los logs se usan para solucionar problemas y depurar. Proporcionan información sobre el comportamiento del sistema y ayudan a identificar problemas.

Es más, la mayoría de los lenguajes de programación tienen capacidades integradas de logging. Por eso, los desarrolladores tienden a seguir empleando sus marcos de trabajo de logging existentes.

Obtén más información sobre el logging y OpenTelemetry

Métricas

Las métricas son valores numéricos que representan el estado o el rendimiento de un sistema durante un período. Las métricas son los indicadores clave de rendimiento. DevOps y otros equipos las usan para monitorear el estado del sistema, identificar tendencias y activar alertas.

Perfiles: el futuro cuarto pilar de la observabilidad moderna

Las métricas, los logs y los rastreos ofrecen información valiosa sobre lo que sucede y dónde. También es importante entender por qué el sistema se comporta como lo hace: ¿por qué hay un cuello de botella en el rendimiento o un cálculo derrochador? Ahí es donde entra en juego el perfilado continuo. Ayuda a lograr una visión completa del sistema, ofrece un nivel más profundo de visibilidad, hasta el nivel de código.

Conoce más sobre los pilares de la observabilidad


Cómo implementar el trazado distribuido

Los trazados distribuidos son esenciales para el monitoreo y la solución de problemas de sistemas complejos y aplicaciones distribuidas. Antes de implementar el trazado distribuido, es importante definir los objetivos y necesidades del trazado, e identificar los servicios críticos y las rutas de solicitudes. Estos son cinco pasos para una implementación correcta del trazado distribuido:

  1. Elegir una herramienta de rastreo, como OpenTelemetry (el marco de trabajo estándar actual para recopilar rastreos, métricas y logs). Debe ser compatible con tu pila tecnológica actual y también debe estar preparado para el futuro.
  2. Instrumentar servicios y aplicaciones. Esto implica agregar código de trazado a tu base de código y definir rastreos (intervalos) en tu aplicación.
  3. Recopilar rastreos iniciando una solicitud de recopilación de datos. Asegúrate de que los rastreos sean precisos y completos a través de la propagación del contexto, un componente esencial del trazado distribuido.
  4. Exportar los rastreos para su monitoreo, análisis y visualización al backend o proveedor de servicios de trazado en el cloud de tu preferencia.
  5. Identificar los cuellos de botella en el rendimiento, las ineficiencias y los errores. Los datos de rastreo pueden ayudar a detectar errores, encontrar servicios de rendimiento lento y visualizar los flujos de datos entre servicios.

Descarga el libro electrónico para saber cómo implementar el trazado distribuido mediante el monitoreo de rendimiento de aplicaciones (APM)


APM y rastreos distribuidos con Elastic

El monitoreo de rendimiento de aplicaciones (APM) juega un papel clave en la observabilidad moderna, y te guía a través de todos tus datos de telemetría proporcionando contexto y mejorando el análisis de causa raíz con machine learning.

Aprovecha Elastic Observability y el poder de la búsqueda para mejorar la calidad del código con el trazado distribuido integral. Captura y analiza transacciones distribuidas que abarcan arquitecturas monolíticas, sin servidor y de microservicios, incluido el soporte para AWS Lambda, autoinstrumentación y lenguajes populares como Java, .NET, PHP, Python, Go y más. Minimiza el tiempo de inactividad y optimiza la experiencia del cliente anotando transacciones con datos del cliente y marcadores de despliegue.


Recursos de rastreo