Trazas distribuidas con AWS X-Ray y registros estructurados

Implementación de aplicaciones en AWS

Dunieski Otano

Amazon Web Services Solutions Architect

La petición lenta que nadie encontraba

  • Una petición tarda cuatro segundos
  • Los registros de cada servicio se ven bien por separado
  • Nadie ve el recorrido completo

Una lupa siguiendo una petición lenta a través de un mapa de servicios distribuidos con un nodo cuello de botella en rojo

Implementación de aplicaciones en AWS

Qué resuelve el trazado distribuido

Silos de logs por servicio aislados en rojo a la izquierda frente a una línea de tiempo Gantt unificada de X-Ray que ensambla la misma petición a través de API Gateway, Lambda, DynamoDB y una API externa en verde

  • Una petición toca muchos servicios
  • Los logs no muestran el recorrido de extremo a extremo
  • Una traza une toda la petición
  • Ve exactamente dónde se fue el tiempo
Implementación de aplicaciones en AWS

Segmentos, subsegmentos y el mapa de servicios

  • Segmento: el trabajo hecho por un servicio
  • Subsegmento: unidad dentro de un segmento, como una llamada a BD
  • Mapa de servicios: gráfico visual de todos los segmentos
  • La latencia y los errores se ven en cada nodo

Anatomía de una traza de X-Ray: un segmento por servicio con subsegmentos para llamadas a BD, ensamblados en un mapa de servicios que muestra latencia y tasa de error en cada nodo

Implementación de aplicaciones en AWS

Anotaciones vs. metadatos


Anotaciones

  • Pares clave-valor indexados, así que son filtrables
  • Úsalas para lo que vayas a buscar, como el nivel de cliente

Metadatos

  • Detalle extra, no indexado
  • Úsalos como contexto, pero no se pueden buscar
Implementación de aplicaciones en AWS

Correlacionar logs con trace IDs

  • Cada traza tiene un trace ID único
  • Incluye el trace ID en tus registros estructurados
  • Salta de una traza lenta a sus líneas de log exactas
  • Logs y trazas se vuelven una sola investigación

Línea de registro estructurado con el campo xray_trace_id resaltado, flecha desde la vista de traza de X-Ray a líneas coincidentes en CloudWatch Logs para una investigación correlacionada

Implementación de aplicaciones en AWS

Leer el mapa de servicios para hallar el cuello de botella

Mapa de servicios de X-Ray con un nodo de alta latencia resaltado, desglose a la línea de tiempo de la traza mostrando el segmento más largo identificado como cuello de botella

  • Empieza en el mapa de servicios, no en los logs
  • Busca el nodo con mayor latencia
  • Entra en su línea de tiempo de la traza
  • El segmento más largo es tu sospechoso
Implementación de aplicaciones en AWS

Trazar toda la petición

  • API Gateway, Lambda y llamadas aguas abajo, todo trazado
  • Cada uno añade su segmento a la misma traza
  • Un solo trace ID une logs y segmentos
  • Visibilidad de extremo a extremo por petición

Traza distribuida de extremo a extremo desde API Gateway pasando por Lambda hasta DynamoDB y una API externa, con un trace ID visible en cada encabezado de segmento uniendo todos los logs y segmentos

Implementación de aplicaciones en AWS

¡Vamos a practicar!

Implementación de aplicaciones en AWS

Preparing Video For Download...