¿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 proporciona información de rastreo sobre las respuestas y llamadas recibidas que realice una aplicación instrumentada, incluida la siguiente información:

  • Recursos intermedios AWS

  • Microservicios

  • Bases de datos

  • API web

Utilice visualizaciones y datos de rastreo para obtener información sobre el rendimiento de su aplicación, identificar problemas y encontrar oportunidades de optimización. Utilice las herramientas de análisis de X-Ray para ver, filtrar e investigar los detalles de cualquier solicitud rastreada hasta su aplicación.

Cómo funciona X-Ray

Para usar X-Ray, primero debe instrumentar su aplicación para que X-Ray pueda realizar un seguimiento de cómo su aplicación gestiona una solicitud. Agregar instrumentación a su aplicación permite a X-Ray enviar datos de rastreo y metadatos para las solicitudes entrantes y salientes y otros eventos dentro de su aplicación. Por ejemplo, puede asignar todas las solicitudes HTTP entrantes y las llamadas posteriores a las Servicios de AWS que realiza su aplicación Java. También puede instrumentar su aplicación automáticamente. Para obtener más información, consulte Instrumentación de la aplicación para obtener más información.

X-Ray asigna un identificador de rastreo a cualquier solicitud que reciba su aplicación instrumentada. Si la aplicación interactúa con otro componente, X-Ray crea un segmento. Este segmento está asociado al identificador de rastreo original y realiza un seguimiento de la calidad de la interacción con ese componente.

X-Ray rastrea el identificador de rastreo y los segmentos a lo largo de todo el flujo de trabajo de la aplicación. Puede analizar todo el flujo de trabajo o aislar una parte para un análisis detallado. Para obtener más información sobre los segmentos, consulte la siguiente Conceptos sección.

X-Ray rastrea su aplicación a medida que interactúa con los nodos de servicio, o componentes, para atender una solicitud entrante de la siguiente manera:

  1. X-Ray utiliza un identificador de rastreo y segmentos para rastrear las interacciones individuales.

  2. Un AWS agente recopila el identificador de rastreo y los segmentos asociados y, a continuación, los pasa a un marco de rastreo de SDK o API.

  3. X-Ray también rastrea las interacciones con cualquier AWS servicio que se integre con X-Ray.

  4. El agente envía los datos a una interfaz gráfica de usuario de consola, donde puede ver información sobre sus trazas, segmentos y subsegmentos, y cómo interactúan estos componentes.

Los pasos anteriores se muestran en el siguiente diagrama:

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

Cómo interactúa X-Ray con su aplicación instrumentada

Cuando su aplicación instrumentada recibe una solicitud, X-Ray hace lo siguiente:

  1. Una vez que la aplicación atiende la solicitud, el SDK de X-Ray envía los datos de rastreo a un AWS recopilador o agente. A continuación, el agente recopila el identificador de rastreo y los segmentos. Puede elegir entre los tres agentes siguientes:

  2. A continuación, el agente envía estos datos a un marco de rastreo que consta de una AWS API o de un AWS SDK creado sobre una API. Este marco interactúa con otros AWS servicios. La API de X-Ray proporciona acceso a todas las funciones de X-Ray a través del AWS SDK o directamente a través de ellaHTTPS. AWS Command Line Interface Utilice la API X-Ray si utiliza un idioma o necesita una operación que no sea compatible con un SDK.

    Puede usar los siguientes SDK:

    • El ADOT SDK: utilice el ADOT SDK para interactuar con diferentes agentes de proveedores que no estén afiliados AWS. El ADOT SDK también admite varios servicios de backend.

    • El SDK de X-Ray: un producto clásico que ya no añade más funciones ni idiomas. Usa el SDK de X-Ray si no quieres actualizar el código de tu aplicación.

    Si utiliza un X-Ray o un ADOT SDK, tiene las siguientes opciones en combinación con un agente:

    • Usa el X-Ray o el ADOT SDK con un CloudWatch agente (se recomienda).

    • Utilice el ADOT SDK con un ADOT Collector (recomendado) si desea utilizar software independiente del proveedor con AWS niveles de seguridad y optimización.

    • Utilice el SDK de X-Ray con un CloudWatch agente: el CloudWatch agente es compatible con el SDK de X-Ray.

    • Usa el SDK de X-Ray con el daemon de X-Ray: úsalo si quieres seguir usando el SDK de X-Ray.

  3. (Opcional) El marco de rastreo puede interactuar con otros AWS servicios, HTTP servidores, otros métodos y consultas. Algunos AWS servicios que se integran con X-Ray incluyen Amazon EC2, Amazon SNS y API Gateway. El SDK o la API realizan un seguimiento de los datos de rastreo durante estas interacciones.

    AWS Los servicios que se integran con X-Ray pueden añadir encabezados de rastreo a las solicitudes entrantes, enviar datos de rastreo a X-Ray o ejecutar un agente para recopilar datos de rastreo. Por ejemplo, AWS Lambda puede enviar datos de rastreo sobre las solicitudes a las funciones de Lambda.

    Para obtener más información sobre otros servicios que funcionan con X-Ray, consulteIntegrar AWS X-Ray con otros Servicios de AWS.

  4. Puede ver los datos de la consola sobre sus trazas, segmentos y subsegmentos en una interfaz gráfica de usuario (GUI). Puede usar las siguientes opciones:

    • La experiencia https://console.aws.amazon.com/cloudwatch/: una interfaz gráfica de usuario que permite ver las trazas, los registros y las métricas en una sola ubicación. Los mapas del servicio de rayos X y CloudWatch ServiceLens el mapa anterior se combinan en el mapa de rastreo de rayos X de la CloudWatch consola.

    • https://console.aws.amazon.com/xray/home: una experiencia de interfaz gráfica de usuario en la que puede ver información sobre sus trazas. Puede ver información que incluye información sobre sus rastros, un mapa de rastreo, un mapa de servicios y análisis. AWS ya no desarrolla esta experiencia de consola.

X-Ray utiliza los datos de rastreo de AWS los recursos con los que interactúa su aplicación 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 llama su servicio de front-end en una sola solicitud. Utilice el mapa de rastreo para identificar los cuellos de botella, los picos de latencia y otros problemas a fin de resolver o mejorar el rendimiento de sus aplicaciones.

X-Ray también generará un mapa de servicios que proporciona una visión general de cómo la aplicación interactúa con los nodos de servicio. Los bordes del mapa de servicio conectan los nodos de servicio. Muestran la frecuencia con la que los nodos se comunican entre sí y la latencia de esas comunicaciones.

La siguiente imagen muestra un ejemplo de un mapa de servicios, que muestra la forma en que la aplicación interactúa con los distintos componentes. Puede ver un mapa de servicios en la consola. La imagen muestra una aplicación que recibe una solicitud de un cliente. A continuación, la imagen muestra cómo interactúa la aplicación con dos tablas de DynamoDB y Amazon SNS.

El mapa de seguimiento 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

La siguiente imagen es un ejemplo de los datos disponibles en la consola para un solo segmento de un rastreo. La imagen muestra una línea de tiempo en la que se muestran varios segmentos y la hora de inicio y la duración de cada segmento en relación con los demás. La imagen también muestra el estado del segmento y el código de respuesta HTTP.

X-Ray muestra información detallada sobre las solicitudes de solicitud, incluido el estado, la duración y el código de respuesta HTTP.

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, agente de usuario.

  • La respuesta: estado, contenido.

  • El trabajo realizado: horas de inicio y finalización, subsegmentos.

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

La siguiente imagen es un ejemplo de información general devuelta sobre un segmento. La imagen muestra información sobre un identificador, la hora de inicio y finalización, cualquier error o fallo y el código de solicitud y respuesta de una solicitud HTTP:

Segmentar datos para un rastro de X-Ray

El marco de seguimiento, que consta de SDK o API, 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 la aplicación. Usted elige qué datos recopila X-Ray modificando la configuración o el código de la aplicación para instrumentar las solicitudes entrantes, las solicitudes posteriores y AWS los servicios.

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 un marco de rastreo, como un SDK o una API, para registrar más información, incluidas las anotaciones y los metadatos. Para obtener más información sobre la estructura de segmentos y subsegmentos y la información registrada, consulte. Documentos de segmentos de X-Ray Los documentos de segmento pueden tener un tamaño de hasta 64 kB.

Subsegmentos

Puede dividir un segmento en subsegmentos. Los subsegmentos proporcionan información más detallada sobre los tiempos y detalles sobre las llamadas posteriores que la aplicación realiza para atender la solicitud original. Un subsegmento contiene detalles adicionales sobre una llamada a una Servicio de AWS API HTTP externa o a una base de datos SQL. También puede definir subsegmentos para instrumentar funciones o líneas de código específicas en su aplicación.

Los subsegmentos proporcionan información más detallada que los segmentos

X-Ray utiliza subsegmentos para generar segmentos inferidos y nodos descendentes en el mapa de rastreo para los servicios que no envían sus propios segmentos, como Amazon DynamoDB. Los subsegmentos le permiten ver todas sus dependencias descendentes, incluso si las dependencias no admiten el rastreo o son externas a ellas. AWS

Los subsegmentos representan la vista de su aplicación de una llamada posterior como cliente. Si el servicio descendente también está instrumentado, su segmento reemplaza al segmento inferido del subsegmento del cliente ascendente. El nodo del gráfico del servicio utiliza la información del segmento del servicio, si está disponible. 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 subsegmento contiene información sobre lo siguiente:

  • El segmento inferido de la traza.

  • El nodo DynamoDB; del gráfico de servicio.

  • La ventaja entre su servicio y DynamoDB.

En el siguiente diagrama se muestra el mapa de servicios de una aplicación de ejemplo. En la imagen, el cliente hace una solicitud a una aplicación de Scorekeep de muestra. La aplicación Scorekeep realiza dos llamadas a DynamoDB. Un borde en el mapa de servicios representa cada una de estas llamadas. Seleccione una arista para ver el estado, el número y la frecuencia de las llamadas realizadas a una tabla de DynamoDB. La siguiente imagen muestra los trazos que corresponden a un borde filtrados por tiempo de respuesta.

Un borde conecta una aplicación instrumentada y una tabla de DynamoDB.

Cuando se llama a otro servicio instrumentado con una aplicación instrumentada, el servicio descendente envía su propio segmento. Este segmento registra su vista de la misma llamada que el servicio ascendente registró en un subsegmento. En el gráfico del servicio, los nodos de ambos servicios contienen información de temporización y error de sus segmentos. El límite entre ellos contiene información del subsegmento del servicio ascendente. El servicio descendente registra cuándo comenzó y finalizó el trabajo solicitado. El servicio ascendente registra la latencia de ida y vuelta, incluido el tiempo que la solicitud pasó viajando entre los dos servicios.

La siguiente imagen muestra la información de rastreo filtrada por el tiempo de respuesta desde un borde que corresponde a una función Lambda ascendente.

El tiempo de respuesta se muestra como un valor a lo largo del tiempo para una solicitud de una aplicación instrumentada que llama a otra aplicación instrumentada.

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 nodo de servicio en el gráfico. Los bordes conectan los servicios que funcionan juntos para atender las solicitudes, conectan los clientes con la aplicación y conectan la aplicación con los servicios y recursos intermedios que 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.

La siguiente imagen muestra un mapa de servicios. El mapa de servicios muestra la relación entre la solicitud del cliente a su aplicación y los servicios con los que la aplicación interactúa para atender la solicitud. En la imagen siguiente, un ejemplo de aplicación Scorekeep interactúa con dos tablas de DynamoDB y Amazon SNS.

Mapa de rastreo

En una aplicación distribuida, X-Ray combina los nodos de todos los servicios que procesan las solicitudes con el mismo ID de rastreo en un único gráfico de servicio. El primer servicio con el que interactúa la solicitud agrega un encabezado de rastreo que se propaga entre la interfaz y los servicios a los que llama.

Por ejemplo, Scorekeep ejecuta una API web que llama a una AWS Lambda función para generar un nombre aleatorio. A continuación, el SDK de X-Ray genera el ID de rastreo y rastrea las llamadas a la función Lambda. AWS Lambda pasa los datos de rastreo y el ID de rastreo a la función Lambda. El SDK de X-Ray también usa el mismo ID de rastreo para enviar datos a un agente o recopilador. Como resultado, los nodos de la API, el AWS Lambda servicio 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

Un registro de seguimiento recopila todos los segmentos que genera una solicitud. El rastreo usa un ID de rastreo para rastrear la ruta de una solicitud a través de la aplicación. Esa solicitud suele ser una solicitud HTTP GET o POST que pasa por un balanceador de cargas, interactúa con el código de la aplicación y genera llamadas posteriores a otros AWS servicios o API web externas. El primer servicio compatible con el que interactúa la solicitud HTTP agrega un encabezado de identificador de seguimiento a la solicitud. Luego, el servicio propaga el ID de rastreo en sentido descendente para rastrear la latencia, la disposición y otros datos de la solicitud.

La siguiente imagen muestra un ejemplo de una aplicación que atiende una solicitud. HTTP El resumen del seguimiento contiene el código de HTTP respuesta, la hora de entrega de la solicitud y el tiempo transcurrido desde que la aplicación la atendió. La siguiente imagen también muestra una cronología para cada segmento de rastreo. La línea temporal muestra el estado, el código de HTTP respuesta y el tiempo que tardó el segmento en finalizar. Un gráfico muestra la duración y la hora de inicio y finalización de cada segmento del rastreo con respecto a los demás segmentos.

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

Para obtener más información sobre cómo se facturan los recibos de X-Ray, consulte AWS X-Ray los precios para obtener información sobre cómo se facturan los trazos de X-Ray. Los datos de rastro se conservan durante 30 días.

Muestreo

El SDK de X-Ray aplica un algoritmo de muestreo para garantizar un seguimiento eficiente y proporcionar una muestra representativa de las solicitudes que atiende su aplicación. Este algoritmo determina qué solicitudes se rastrean. De forma predeterminada, el SDK de X-Ray registra la primera solicitud recibida al principio de cada segundo y el cinco por ciento 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 cambiar la frecuencia de muestreo predeterminada y configurar reglas adicionales que apliquen el muestreo en función de las propiedades del servicio o la 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 gran volumen, como sondeos de antecedentes, comprobaciones de estado o mantenimiento de la conexión.

Para obtener más información, consulte Configure las reglas de muestreo y la API. CreateSamplingRule

Encabezado de seguimiento

Todas las solicitudes se rastrean, hasta un número mínimo, que puede configurar. Tras alcanzar ese mínimo, X-Ray rastrea solo un porcentaje de las solicitudes para evitar costes adicionales. X-Ray agrega la decisión de muestreo y el ID de rastreo a las solicitudes HTTP en los encabezados de rastreo que comienzan con. X-Amzn-Trace-Id X-Ray agrega estos encabezados cuando una solicitud interactúa con el primer AWS servicio que se integra con X-Ray. El SDK de X-Ray lee estos encabezados y los incluye 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 descendente utiliza el ID del segmento principal para conectar las dos 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

Lambda u otros Servicios de AWS pueden añadir parte de un encabezado que comienza Lineage como parte de sus mecanismos de procesamiento. No debe utilizar directamente la parte adjunta del encabezado de seguimiento.

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 muestree un subconjunto pequeño de datos, una aplicación compleja puede generar una gran cantidad de datos de rastreo. Utilice expresiones de filtro para poder encontrar trazas específicas, incluidas las de solicitudes individuales, rutas o usuarios específicos.

La siguiente imagen muestra un cuadro de texto en la consola de X-Ray que puede utilizar para filtrar por el grupo que defina. Para obtener más información sobre los grupos, consulte la siguiente sección Grupos.

Seleccione una traza para ver los detalles de las solicitudes individuales

Grupos

Puede utilizar un grupo dentro de una expresión de filtro para reducir la cantidad de datos de rastreo y centrarse en los datos que se ajusten a los criterios del grupo.

Utilice un grupo para generar gráficos de servicio, resúmenes de rastreo y CloudWatch métricas que sean específicos de ese grupo. Puede llamar por su nombre o por el nombre de recurso de Amazon (ARN). X-Ray compara las trazas entrantes con la expresión del filtro de grupo tal como se almacenan en el servicio de rayos X. CloudWatchpublica las métricas de las trazas que coinciden con los criterios del grupo 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 evitar la fusión de grupos desconectados en un único gráfico, elimine el grupo actual y https://docs.aws.amazon.com/xray/latest/api/API_CreateGroup.html cree uno nuevo.

nota

La facturación de los grupos se basa en el número de trazas recuperadas que coinciden con la expresión del filtro. Para más información, consulte Precios de AWS X-Ray.

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

Anotaciones y metadatos

Cuando instrumenta su aplicación, el SDK de X-Ray registra información sobre las solicitudes entrantes y salientes. El SDK también registra información sobre 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 combinan a nivel de rastreo. Se pueden añadir a cualquier segmento o subsegmento.

Las anotaciones son pares clave-valor que se indexan para su uso con 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 clave-valor con valores de cualquier tipo, incluidos objetos y listas, que no están indexados. 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, en la página de detalles del seguimiento de la consola. CloudWatch Para obtener más información, consulte Ver trazas y detalles de las trazas en. Explore la consola X-Ray

Errores y excepciones

X-Ray rastrea los errores en el código de su aplicación y los devueltos por los servicios descendentes. X-Ray rastrea los siguientes códigos de HTTP respuesta de las solicitudes:

  • Error— Los errores del cliente (errores de la serie 400) indican que el servidor no pudo entender ni procesar la solicitud del cliente porque la propia solicitud contenía un error. Estos errores pueden deberse a errores de sintaxis, a la falta de información o a un cuerpo de solicitud incorrecto.

  • Fault— Los fallos del servidor (errores de la serie 500) indican que el servidor no ha podido procesar una solicitud válida debido a un problema con el propio servidor. Estos errores pueden deberse a problemas que incluyen fallos en el software o el hardware o a limitaciones de recursos del servidor.

  • Throttle— Los errores de limitación (429 solicitudes de más) son un tipo específico de error del cliente que se produce cuando un cliente envía demasiadas solicitudes a un servidor o a una API durante un período de tiempo.

Si se produce una excepción mientras la aplicación atiende una solicitud instrumentada, el SDK de X-Ray registra los detalles de la excepción, incluido el identificador de seguimiento de la pila, si está disponible. Puede ver excepciones en detalles de segmento en la consola de X-Ray.