¿Qué es AWS X-Ray? - AWS X-Ray

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

¿Qué es AWS X-Ray?

AWS X-Ray es un servicio que recopila datos sobre las solicitudes que atiende su aplicación y proporciona herramientas que puede utilizar para ver, filtrar y obtener información sobre esos datos a fin de identificar problemas y oportunidades de optimización. En el caso de cualquier solicitud rastreada hasta su aplicación, podrá consultar información detallada no solo sobre la solicitud y la respuesta, sino también sobre las llamadas que la aplicación realiza a AWS los recursos intermedios, los microservicios, las bases de datos y las API web.


      X-Ray muestra información detallada sobre las solicitudes de aplicaciones.

AWS X-Ray recibe trazas de su aplicación, además de los usos de Servicios de AWS su aplicación que ya están integrados con X-Ray. La instrumentación de una aplicación implica el envío de datos de rastro para solicitudes entrantes y salientes y otros eventos de la aplicación junto con los metadatos de cada solicitud. Muchos escenarios de instrumentación solo requieren cambios en la configuración. Por ejemplo, puede utilizar todas las solicitudes HTTP entrantes y las llamadas posteriores Servicios de AWS que realice su aplicación Java. Existen varios SDK, agentes y herramientas que puede utilizar para instrumentar su aplicación para rastreo de X-Ray. Para obtener más información, consulte Instrumentación de su aplicación.

Servicios de AWS que están integrados con X-Ray pueden añadir encabezados de rastreo a las solicitudes entrantes, enviar datos de rastreo a X-Ray o ejecutar el daemon X-Ray. Por ejemplo, AWS Lambda puede enviar datos de rastreo sobre las solicitudes a sus funciones de Lambda y ejecutar el daemon X-Ray en los trabajadores para facilitar el uso del SDK de X-Ray.


      Funcionamiento del SDK de X-Ray

En lugar de enviar los datos de rastro directamente a X-Ray, cada SDK cliente envía documentos de segmento JSON a un proceso del daemon que escucha el tráfico UDP. El daemon de X-Ray almacena en búfer segmentos en una cola y los carga en X-Ray en lotes. El daemon está disponible para Linux, Windows y macOS, y se incluye en AWS Lambda las plataformas AWS Elastic Beanstalk y.

X-Ray utiliza los datos de rastreo de los AWS recursos que impulsan sus aplicaciones en la nube para generar un mapa de rastreo detallado. El mapa de rastreo muestra el cliente, su servicio de front-end y los servicios de backend a los que recurre su servicio de front-end para procesar las solicitudes y conservar los datos. Utilice el mapa de rastreo para identificar los cuellos de botella, los picos de latencia y otros problemas que debe resolver para mejorar el rendimiento de sus aplicaciones.


      El mapa de rastreo muestra el cliente, el servicio de front-end y los servicios de backend a los que recurre su servicio de front-end para procesar las solicitudes y conservar los datos

Introducción a X-Ray

Para empezar AWS X-Ray:

  • Inicie una aplicación de muestra que ya haya sido instrumentada para generar datos de rastro. En unos minutos, puede iniciar la aplicación de muestra, generar tráfico, enviar segmentos a X-Ray y ver un mapa de rastreo y los rastros en el AWS Management Console.

  • Aprenda a instrumentar su aplicación, incluido el uso de los SDK de X-Ray o la AWS Distro para enviar datos de rastreo OpenTelemetry a X-Ray.

  • Explore otros Servicios de AWS que están integrados en X-Ray, como el muestreo y la adición de encabezados a solicitudes entrantes, la ejecución del daemon X-Ray y el envío automático de datos de rastro a X-Ray.

  • Utilice la API de X-Ray, que proporciona acceso a todas las funciones de X-Ray a través del AWS SDK o directamente a través de HTTPS. AWS Command Line Interface

AWS X-Ray conceptos

AWS X-Ray recibe datos de los servicios como segmentos. A continuación, X-Ray agrupa los segmentos que tienen una solicitud en común en rastros. X-Ray procesa los rastros para generar un gráfico de servicios, que constituye una representación visual de la aplicación.

Segmentos

Los recursos informáticos en los que se ejecuta la lógica de su aplicación envían datos del trabajo en forma de segmentos. Un segmento incluye el nombre del recurso, detalles de la solicitud y detalles del trabajo realizado. Por ejemplo, cuando una solicitud HTTP llega a la aplicación, puede registrar datos sobre:

  • El host nombre de host, alias o dirección IP

  • La solicitud: método, dirección del cliente, ruta y agente de usuario

  • La respuesta: estado y contenido

  • El trabajo realizado: hora de inicio y finalización y subsegmentos

  • Problemas que se producen: errores, fallos y excepciones, incluida la captura automática de pilas de excepciones.


        Segmentar datos para un rastro de X-Ray

El SDK de X-Ray recopila información de los encabezados de solicitud y respuesta, el código de la aplicación y los metadatos sobre los AWS recursos en los que se ejecuta. Usted elige los datos que desea recopilar modificando la configuración o el código de la aplicación para gestionar las solicitudes entrantes, las solicitudes posteriores y AWS los clientes del SDK.

Solicitudes reenviadas

Si un equilibrador de carga u otro intermediario reenvía una solicitud a la aplicación, X-Ray toma la IP de cliente del encabezado X-Forwarded-For de la solicitud en lugar de tomar la IP de origen del paquete IP. La IP de cliente que se graba para una solicitud reenviada puede estar falsificada, por lo que no se debe confiar en ella.

Puede utilizar el SDK de X-Ray para registrar información adicional como, por ejemplo, anotaciones y metadatos. Para obtener más información sobre la estructura y la información que se registra en los segmentos y subsegmentos, consulte AWS X-Ray segmentar documentos. Los documentos de segmento pueden tener un tamaño de hasta 64 kB.

Subsegmentos

Un segmento puede desglosar los datos del trabajo realizado en subsegmentos. Los subsegments proporcionan información y detalles más precisos sobre los intervalos de las llamadas posteriores que la aplicación realizó para cumplir la solicitud original. Un subsegmento puede contener detalles adicionales sobre una llamada a una Servicio de AWS API HTTP externa o a una base de datos SQL. Puede incluso definir subsegmentos arbitrarios para instrumentar funciones específicas o líneas de código en su aplicación.


        Los subsegmentos proporcionan información más precisa

En el caso de los servicios que no envían sus propios segmentos, como Amazon DynamoDB, X-Ray utiliza subsegmentos para generar segmentos inferidos y nodos descendentes en el mapa de rastreo. Esto le permite ver todas sus dependencias posteriores, incluso si no soportan el rastreo o son externas.

Los subsegmentos representan la vista de su aplicación de una llamada posterior como cliente. Si el servicio posterior también está instrumentado, el segmento que envía sustituye al segmento inferido generado desde el subsegmento del cliente principal. El nodo en el gráfico de servicio utiliza siempre información desde el segmento del servicio, si está disponible, mientras que el límite entre los dos nodos utiliza el subsegmento del servicio ascendente.

Por ejemplo, cuando se llama a DynamoDB con un cliente de SDK AWS instrumentado, el SDK de X-Ray graba un subsegmento para esa llamada. DynamoDB no envía un segmento, por lo que el segmento inferido en el rastro, el nodo de DynamoDB en el gráfico de servicio y el borde entre su servicio y DynamoDB contienen información del subsegmento.


        Borde entre una aplicación instrumentada y DynamoDB.

Si llama a otro servicio instrumentado con una aplicación instrumentada, el servicio posterior envía su propio segmento para registrar su vista de la misma llamada que el servicio ascendente registró en un subsegmento. En el gráfico de servicio, los nodos de ambos servicios contienen información de tiempo y error de los segmentos de dichos servicios, mientras que el límite entre ellos contiene información del subsegmento del servicio ascendente.


        Una aplicación instrumentada llamando a otra aplicación instrumentada.

Ambos puntos de vista son útiles, ya que el servicio posterior registra precisamente cuándo comenzó y finalizó el trabajo en la solicitud y el servicio ascendente registra la latencia de ida y vuelta, incluido el tiempo que la solicitud ha pasado viajando entre los dos servicios.

Gráfico de servicios

X-Ray utiliza los datos que su aplicación envía para generar un gráfico de servicios. Cada AWS recurso que envía datos a X-Ray aparece como un servicio en el gráfico. Los límites conectan los servicios que trabajan en equipo para atender solicitudes. Los límites conectan a los clientes con la aplicación, y conectan la aplicación con los servicios y recursos posteriores que esta utiliza.

Nombres de servicio

El name de un segmento debe coincidir con el nombre de dominio o el nombre lógico del servicio que genere el segmento. Sin embargo, este requisito no se exige. Cualquier aplicación que tenga permiso para PutTraceSegments puede enviar segmentos con cualquier nombre.

Un gráfico de servicios es un documento JSON que contiene información acerca de los servicios y recursos que componen la aplicación. La consola de X-Ray utiliza el gráfico de servicios para generar una visualización o un mapa de servicio.


        Mapa de rastreo

En las aplicaciones distribuidas, X-Ray combina nodos de todos los servicios que procesan solicitudes con el mismo ID de rastro en un único gráfico de servicios. El primer servicio al que llega la solicitud añade un encabezado de rastro que se propaga entre el front-end y servicios que a los llama.

Por ejemplo, Scorekeep ejecuta una API web que llama a un microservicio (una función de AWS Lambda ) para generar un nombre aleatorio usando una biblioteca Node.js. El SDK de X-Ray para Java genera el ID de rastro y lo incluye en las llamadas a Lambda. Lambda envía datos de rastreo y transfiere el ID de rastro a la función. El SDK de X-Ray para Node.js también utiliza el ID de rastro para enviar datos. Como resultado, los nodos de la API, el servicio Lambda y la función Lambda aparecen todos como nodos separados, pero conectados, en el mapa de rastreo.

Los datos del gráfico de servicio se conservan durante 30 días.

Rastros

El ID de rastro muestra la ruta que recorre una solicitud en la aplicación. Un registro de seguimiento recopila todos los segmentos que genera una solicitud. La solicitud suele ser una solicitud GET o una solicitud POST de HTTP que viaja a través de un equilibrador de carga, llega a su código de aplicación y genera llamadas posteriores a otros servicios de AWS o API web externas. El primer servicio compatible con el que interactúa la solicitud HTTP le añade un encabezado de ID de rastro, que continúa propagándose para registrar la latencia, la disposición y otros datos que requiere la solicitud.


        Vista de escala de tiempo de un rastro, que incluye todos los segmentos generados por una solicitud

Consulte Precios de AWS X-Ray para obtener información sobre cómo se facturan los rastros de X-Ray. Los datos de rastro se conservan durante 30 días.

Muestreo

Para garantizar un rastreo eficaz y proporcionar una muestra representativa de las solicitudes que su aplicación atiende, el SDK de X-Ray aplica un algoritmo de muestreo para determinar qué solicitudes se rastrearán. De forma predeterminada, el SDK de X-Ray registra la primera solicitud cada segundo y el 5 % de las solicitudes adicionales.

Para evitar incurrir en cargos por servicio al empezar, la tasa de muestreo predeterminada es conservadora. Puede configurar X-Ray para modificar la regla de muestreo predeterminada y configurar reglas adicionales que aplican el muestreo en función de las propiedades del servicio o solicitud.

Por ejemplo, es posible que desee deshabilitar las solicitudes de muestreo y rastreo completo para las llamadas que modifican el estado o tratar con usuarios o transacciones. Para llamadas de solo lectura de alto volumen, como sondeo en segundo plano, comprobaciones de estado o mantenimiento de conexión, puede muestrear con un bajo índice y seguirá obteniendo datos suficientes para ver los problemas que surjan.

Para obtener más información, consulte Configuración de reglas de muestreo de .

Encabezado de seguimiento

Todas las solicitudes se rastrean hasta alcanzar un mínimo configurable, después de lo cual se rastrea un porcentaje de solicitudes para evitar un costo innecesario. La decisión de muestreo y el ID de rastro se añaden a las solicitudes HTTP en los encabezados de rastreo denominados X-Amzn-Trace-Id. El primer servicio integrado en X-Ray, al que llega la solicitud añade un identificador de rastreo, que es leído por el SDK de X-Ray, e incluido en la respuesta.

ejemplo Encabezado de rastreo con ID de rastro raíz y decisión de muestreo
X-Amzn-Trace-Id: Root=1-5759e988-bd862e3fe1be46a994272793;Sampled=1
Seguridad del encabezado de rastreo

Un encabezado de rastreo puede provenir del SDK de X-Ray, de una Servicio de AWS o de la solicitud del cliente. Su aplicación puede eliminar el encabezado X-Amzn-Trace-Id en las solicitudes entrantes para evitar los problemas causados por usuarios que agregan ID de rastro o decisiones de muestreo a sus solicitudes.

El encabezado de rastreo también pueden contener un ID de segmento primario si la solicitud se originó a partir de una aplicación instrumentada. Por ejemplo, si su aplicación llama a una API web HTTP posterior con un cliente HTTP instrumentado, el SDK de X-Ray añade el ID del segmento de la solicitud original al encabezado de rastreo de la solicitud posterior. Una aplicación instrumentada que atiende la solicitud posterior puede registrar el ID del segmento primario para conectar ambas solicitudes.

ejemplo Encabezado de rastreo con ID de rastro raíz, ID de segmento primario y decisión de muestreo
X-Amzn-Trace-Id: Root=1-5759e988-bd862e3fe1be46a994272793;Parent=53995c3f42cd8ad8;Sampled=1

LineageLambda y Servicios de AWS otros pueden adjuntar al encabezado de seguimiento como parte de sus mecanismos de procesamiento y no deben usarse directamente.

ejemplo Encabezado de rastreo con Lineage
X-Amzn-Trace-Id: Root=1-5759e988-bd862e3fe1be46a994272793;Sampled=1;Lineage=a87bd80c:1|68fd508a:5|c512fbe3:2

Expresiones de filtro

Aunque se haya realizado un muestreo, una aplicación genera grandes cantidades de datos. La AWS X-Ray consola proporciona una easy-to-navigate vista del gráfico del servicio. Allí se muestra información sobre el estado y el rendimiento con la cual se puede identificar problemas y posibilidades de optimización en su aplicación. Cuando se realiza un rastreo avanzado, puede explorar en profundidad en busca de solicitudes individuales, o bien utilizar expresiones de filtro para encontrar rastros relacionados con rutas específicas o usuarios específicos.


        Mostrar los rastros de solicitudes individuales

Grupos

Como complemento de las expresiones de filtro, X-Ray también admite la característica de grupos. Mediante una expresión de filtro, puede definir los criterios para aceptar los rastros en el grupo.

Puede llamar al grupo por su nombre o por el nombre del recurso de Amazon (ARN) para generar su propio gráfico de servicios, resúmenes de seguimiento y métricas de Amazon. CloudWatch Una vez que se crea un grupo, los rastros de entrada se comparan con la expresión de filtro del grupo a medida que se almacenan en el servicio de X-Ray. Las métricas del número de rastreos que coinciden con cada criterio se publican CloudWatch cada minuto.

La actualización de la expresión de filtro de un grupo no cambia los datos que ya se han registrado. La actualización se aplica únicamente a los rastros posteriores. Esto puede dar lugar a un gráfico que combina la expresión nueva con la anterior. Para evitarlo, elimine el grupo actual y cree uno nuevo.

nota

Los grupos se facturan por el número de rastros recuperados que coinciden con la expresión de filtro. Para más información, consulte Precios de AWS X-Ray.

Para obtener más información acerca de los grupos, consulte Configuración de grupos.

Anotaciones y metadatos

Al instrumentar la aplicación, el SDK de X-Ray registra información sobre las solicitudes entrantes y salientes, los AWS recursos utilizados y la propia aplicación. Puede añadir más información al documento de segmento, por ejemplo anotaciones y metadatos. Las anotaciones y los metadatos se agregan en el nivel de seguimiento y se pueden añadir a cualquier segmento o subsegmento.

Las anotaciones son pares de clave-valor que se indexan para usarlos en expresiones de filtro. Utilice anotaciones para registrar los datos que desee utilizar para agrupar rastros en la consola o cuando llame a la API de GetTraceSummaries.

X-Ray indexa hasta 50 anotaciones por rastro.

Los metadatos son pares de clave-valor con valores de cualquier tipo, por ejemplo objetos y listas, pero que no se indexan. Utilice los metadatos para registrar los datos que desee almacenar en el rastro, pero que no vaya a usar para buscar rastros.

Puede ver las anotaciones y los metadatos en la ventana de detalles del segmento o subsegmento, dentro de la página de detalles de Trace de la CloudWatch consola.


        Las anotaciones y los metadatos se pueden ver en los detalles del segmento o subsegmento de la consola  CloudWatch

Errores y excepciones

X-Ray rastrea los errores que se producen en su código de aplicación y los errores que devuelven los servicios posteriores. Los errores se clasifican como se indica a continuación.

  • Error: errores del cliente (errores de la serie 400)

  • Fault: errores del servidor (errores de la serie 500)

  • Throttle: errores de limitación controlada (429: demasiadas solicitudes)

Cuando se produce una excepción, mientras la aplicación está sirviendo una solicitud instrumentada, el SDK de X-Ray registra detalles sobre la excepción, incluido el rastro de pila, si está disponible. Puede ver excepciones en detalles de segmento en la consola de X-Ray.