Trazado distribuido con AWS X-Ray - Análisis de rendimiento de microservicios

Visualiza la ruta completa de solicitudes en microservicios con mapas de servicios y filtra trazas problemáticas con expresiones de filtro. También presentamos patrones de integración con OpenTelemetry.

Descripción general de X-Ray

X-Ray es un servicio que traza las solicitudes de aplicaciones distribuidas e identifica cuellos de botella de rendimiento. En cadenas de servicios como API GatewayLambdaDynamoDB, visualiza el tiempo empleado y los errores en cada paso. Con el mapa de servicios se comprenden visualmente las dependencias entre microservicios, identificando inmediatamente los servicios con alta latencia o alta tasa de errores.

Trazas y muestreo

Al incorporar el SDK de X-Ray en la aplicación, se trazan automáticamente las solicitudes HTTP, llamadas al SDK de AWS, consultas SQL, etc. Lambda y API Gateway solo requieren habilitar la configuración para iniciar el trazado, sin necesidad de incorporar el SDK. Las reglas de muestreo controlan la tasa de recopilación de trazas. Por defecto, se muestrea 1 solicitud por segundo + 5% de las solicitudes adicionales. Para servicios de alto tráfico se reduce la tasa de muestreo para controlar costos, y para servicios de bajo tráfico se traza el 100% de las solicitudes con muestreo completo.

Mapa de servicios y análisis de rendimiento

El mapa de servicios de X-Ray se genera automáticamente a partir de los datos de trazas, mostrando visualmente las dependencias entre microservicios, la latencia de cada servicio y la tasa de errores. El color de los nodos cambia según la latencia y la tasa de errores, permitiendo identificar servicios problemáticos de un vistazo. Al hacer clic en un nodo específico, se muestra la distribución del tiempo de respuesta (histograma) de ese servicio, pudiendo verificar las latencias P50, P95 y P99. Usando expresiones de filtro para filtrar por condiciones específicas (trazas con errores, trazas con latencia superior a 3 segundos, etc.), se puede investigar eficientemente la causa raíz del problema. La función Insights detecta automáticamente patrones de latencia anormales y presenta trazas de muestra de las solicitudes afectadas. Para profundizar en el uso práctico de X-Ray, puede consultar libros especializados (Amazon).

Integración con OpenTelemetry y patrones de implementación

X-Ray soporta la integración con OpenTelemetry (OTel), y usando AWS Distro for OpenTelemetry (ADOT) se pueden enviar trazas de aplicaciones instrumentadas con el SDK de OTel a X-Ray. El SDK de OTel proporciona una API de instrumentación neutral respecto al proveedor, por lo que si en el futuro se cambia el backend a Jaeger o Zipkin, no se requiere modificación del código de la aplicación. Para funciones Lambda, simplemente habilitar el trazado activo de X-Ray proporciona instrumentación automática sin necesidad de incorporar el SDK. En ECS y EKS, se despliega el daemon de X-Ray como contenedor sidecar para recopilar datos de trazas del contenedor de la aplicación. También es posible crear subsegmentos personalizados para medir la latencia individual de llamadas a APIs externas o consultas a bases de datos.

Precios de X-Ray

Los precios de X-Ray se componen del número de trazas registradas y escaneadas. El registro de trazas es gratuito para las primeras 100.000 por mes, y después cuesta aproximadamente 5,00 USD por millón. La obtención (escaneo) de trazas cuesta aproximadamente 0,50 USD por millón. Ajustar la tasa de muestreo para controlar el volumen de trazas es la medida de optimización de costos más efectiva. Se recomienda diferenciar reduciendo la tasa de muestreo al 1% para servicios de alto tráfico y al 100% para servicios de bajo tráfico. La función Insights está disponible sin cargos adicionales.

Resumen

X-Ray es un servicio de trazado distribuido que visualiza la ruta completa de solicitudes en arquitecturas de microservicios. Sus principales características son la comprensión de dependencias mediante mapas de servicios, el filtrado de trazas problemáticas con expresiones de filtro y la instrumentación neutral respecto al proveedor mediante integración con OpenTelemetry. Se pueden elegir métodos de instrumentación según la forma de despliegue, como trazado activo de Lambda o sidecar ADOT.