Conceptos y arquitectura de X-Ray

Supervisión y resolución de problemas en AWS

John Q. Martin

Principal Consultant

El reto de los sistemas distribuidos

 

Aplicación monolítica

  • Flujo lineal, en un único proceso
  • Depuración sencilla

 

Aplicación distribuida

  • Una petición pasa por varios servicios, BDs y APIs externas
  • Si falla, ¿qué servicio lo causó?

Un gran nudo enredado de hilos de muchos colores, que transmite lo difícil que es seguir una petición en un sistema distribuido

Supervisión y resolución de problemas en AWS

¿Qué es AWS X-Ray?

 

X-Ray es un servicio de trazado distribuido que:

  • Sigue peticiones de extremo a extremo entre servicios
  • Mide latencia y detecta errores en cada paso
  • Visualiza la arquitectura como un mapa de servicios

 

Ejemplo de ruta de petición:

  Diagrama de una ruta de petición que fluye por varios servicios en un trazado distribuido

Supervisión y resolución de problemas en AWS

Cinco capacidades clave

 

Cinco capacidades clave de X-Ray: trazado de peticiones, análisis de rendimiento, detección de errores, mapa de servicios e insights

Supervisión y resolución de problemas en AWS

Cómo funciona el trazado

 

Flujo de trazado distribuido: una petición entra en el Servicio A, que llama al Servicio B y luego al C, pasando el Trace ID en la cabecera HTTP; cada servicio emite un segmento con el mismo Trace ID al daemon de X-Ray, que los reenvía a X-Ray, donde se ensamblan en un único trazo completo

Supervisión y resolución de problemas en AWS

Propagación del Trace ID y de cabeceras

 

Formato del Trace ID:

Formato del Trace ID de X-Ray con número de versión, marca de tiempo Unix en hex y un identificador único

 

Cabecera HTTP:

X-Amzn-Trace-Id:
  Root=1-5e8c1234-...;
  Parent=abc123;
  Sampled=1
  • Root, Trace ID, igual en todos los servicios
  • Parent, ID del segmento ascendente
  • Sampled, 0 o 1, trazado o omitido
Supervisión y resolución de problemas en AWS

El daemon de X-Ray

 

Qué hace:

  • Escucha en el puerto UDP 2000
  • Recibe datos de segmentos de tu aplicación
  • Almacena en búfer, agrupa y reenvía a la API de X-Ray
  • Desacopla tu app del servicio X-Ray

 

Despliegue por entorno:

Despliegue del daemon de X-Ray por entorno: automático en Lambda, un servicio en EC2 y sidecar en ECS

Supervisión y resolución de problemas en AWS

Muestreo

 

Regla por defecto:

  • Primera petición por segundo: siempre trazada
  • 5% de las adicionales: muestreadas

Campos de reglas personalizadas:

  • fixed_target: peticiones/s a trazar siempre
  • rate: porcentaje de peticiones adicionales
  • priority: gana el número menor

 

Estrategia de ejemplo:

Rule 1 (priority 1):
  5xx errors -> 100% sampling

Rule 2 (priority 10):
  Normal traffic -> 5% sampling
Supervisión y resolución de problemas en AWS

Segmentos

 

Qué registra un segmento:

  • Nombre del servicio
  • Hora de inicio y fin
  • Trace ID
  • Detalles de la solicitud y respuesta HTTP
  • Cuenta y región de AWS

 

Estados de los segmentos:

Cinco estados de segmento en X-Ray: in progress, ok, error, fault y throttle

Supervisión y resolución de problemas en AWS

Subsegmentos

 

Comparación de cronogramas: sin subsegmentos, una única barra total de 800 ms; con subsegmentos, los mismos 800 ms divididos en DynamoDB 50 ms, PaymentService 400 ms resaltado como cuello de botella e InventoryService 300 ms

Qué hacen los subsegmentos:

  • Dan tiempos granulares dentro de un segmento
  • Siguen llamadas descendentes
  • Desglosan 800 ms en:
    • DynamoDB.PutItem: 50 ms
    • Llamada a PaymentService: 400 ms
    • Llamada a InventoryService: 300 ms

 

Namespaces:

Tres namespaces de subsegmentos: aws para llamadas a AWS, remote para HTTP externo y local para código propio

Supervisión y resolución de problemas en AWS

Anotaciones

 

Datos clave:

  • Pares clave-valor indexados: se pueden buscar y filtrar
  • Límite: 50 indexados por trazo
  • Tipos: string, number, boolean

Úsalas para:

  • user_id, order_id, environment
  • version, feature flags, códigos de error

 

Sintaxis de filtros:

annotation.user_id = "user-123"
annotation.environment = "production"
AND annotation.version = "1.2.3"
Supervisión y resolución de problemas en AWS

Metadatos

 

Datos clave:

  • No indexado: no se puede buscar ni filtrar
  • Sin límite de tamaño
  • Admite cualquier estructura JSON

Úsalo para:

  • Cuerpos completos de solicitud y respuesta
  • Mensajes de error y trazas de pila
  • Contexto de negocio (artículos del pedido, direcciones)

 

Anotaciones vs. metadatos:

Tabla comparativa de anotaciones (indexadas y buscables) frente a metadatos (detallados y no indexados)

Supervisión y resolución de problemas en AWS

Estructura completa del trazo

 

Estructura completa de un trazo con cuatro segmentos y la API de pagos externa como la operación más lenta

Supervisión y resolución de problemas en AWS

Resumen de la lección

 

  • X-Ray: servicio de trazado distribuido para visibilidad de extremo a extremo entre servicios
  • Mecanismo de trazado: propagación del Trace ID por cabeceras HTTP, segmentos recogidos por el daemon, reglas de muestreo configurables
  • Componentes del trazo:
    • Segmentos: registros de trabajo a nivel de servicio
    • Subsegmentos: temporización granular de operaciones descendentes
    • Anotaciones: pares clave-valor indexados para filtrar y buscar
    • Metadatos: contexto detallado, no indexado
Supervisión y resolución de problemas en AWS

¡Vamos a practicar!

Supervisión y resolución de problemas en AWS

Preparing Video For Download...