Permite realizar debugging y análisis de nuestras aplicaciones de forma visual, especialmente adecuado para arquitecturas de microservicios.
Contenido
Ventajas
Con X-Ray podemos analizar aspectos como los siguientes:
- Problemas de rendimiento (cuellos de botella)
- Dependencias entre microservicios
- Incidentes tipo pinpoint
- Revisar comportamiento de una solicitud
- Encontrar errores y excepciones
- Cumplimiento de SLA
- Identificar usuarios afectados
Además, es compatible con Lambda, Elastic Beanstalk, ECS, ELB, API Gateway, EC2 y servidores de aplicaciones (includo On-Premise).
Activación de X-Ray
- A nivel de aplicación, debemos importar el SDK de AWS X-Ray, y son necesarios muy pocos cambios. El SDK capturará: llamadas a servicios AWS, peticiones HTTP/HTTPS, llamadas a BBDD (MySQL, PostgreSQL, DynamoDB) y llamadas a SQS.
- Instalar demonio X-Ray o habilitar su integración:
- Se puede instalar en Linux, Windows, Mac, y trabaja a bajo nivel analizando paquetes UDP.
- Lambda y otros servicios AWS, ya lo tienen integrado
Conceptos X-Ray
Algunos conceptos para la implementación de X-Ray:
- Segments: es lo que envía cada aplicación / servicio
- SubSegment: para añadir más detalles al segment
- Trace: Varios segmentos capturados para formar una traza de origen a fin
- Samping: para reducir el coste, se reducen el número de peticiones enviadas a X-Ray
- Annotations: pares de valores usados para indexar trazas y usarlo con filtros
- Metadata: pares de valores, No indexados, y no usados para búsquedas
X-Ray API
Operaciones de escritura:
- PutTraceSegments: sube segmentos al servicio X-Ray
- PutTelemetryRecords: datos de telemetría del servicio (SegmentsReceivedCount, SegmentsRejectedCounts, …)
- GetSamplingRules: muestra las Sampling Rules existentes
Operaciones de lectura:
- GetServiceGraph: visualización principal
- BatchGetTraces: obtiene lista de trazas por ID, cada traza es el conjunto de segmentos originados desde una única petición.
- GetTraceSummaries: obtiene lista de IDs y anotaciones para las trazas disponibles en una franja de tiempo.
- GetTraceGraph: gráfica de servicio de una traza determinada