SDK de AWS X-Ray para Python - 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.

SDK de AWS X-Ray para Python

El SDK de X-Ray para Python es una biblioteca para las aplicaciones web de Python que proporciona clases y métodos para generar y enviar datos de rastreo al daemon de X-Ray. En los datos de rastreo se incluye información sobre las solicitudes HTTP entrantes que atiende la aplicación, además de las llamadas que la aplicación realiza a servicios posteriores mediante el SDK de AWS, clientes HTTP o un conector a la base de datos SQL. También puede crear segmentos de forma manual y agregar información de depuración en anotaciones y metadatos.

Puede descargar el SDK con pip.

$ pip install aws-xray-sdk
nota

El SDK de X-Ray para Python es un proyecto de código abierto. Puede seguir el proyecto, enviar problemas y solicitudes de extracción en GitHub: github.com/aws/aws-xray-sdk-python

Si usa Django o Flask, empiece agregando el middleware del SDK a la aplicación para rastrear las solicitudes entrantes. El middleware crea un segmento para cada solicitud rastreada y lo completa cuando se envía la respuesta. Mientras el segmento está abierto, puede utilizar los métodos del cliente del SDK para añadir información al segmento y crear subsegmentos para rastrear llamadas posteriores. El SDK también registra automáticamente las excepciones que produce su aplicación mientras el segmento está abierto. Para otras aplicaciones, puede crear segmentos manualmente.

En el caso de las funciones de Lambda llamadas por una aplicación o un servicio instrumentados, Lambda lee el encabezado de rastreo y rastrea automáticamente las solicitudes muestreadas. Para otras funciones, puede configurar Lambda con el fin de muestrear y rastrear las solicitudes entrantes. En cualquier caso, Lambda crea el segmento y se lo proporciona al SDK de X-Ray.

nota

En Lambda, el SDK de X-Ray es opcional. Si no lo usa en su función, el mapa de servicio seguirá incluyendo un nodo para el servicio de Lambda y uno para cada función de Lambda. Al añadir el SDK, puede instrumentar el código de función para añadir subsegmentos al segmento de función registrado por Lambda. Para obtener más información, consulte AWS Lambda y AWS X-Ray.

Consulte Entorno de trabajo para ver un ejemplo de una función de Python instrumentada en Lambda.

A continuación, utilice el SDK de X-Ray para Python con el fin de instrumentar llamadas posteriores aplicando parches a las bibliotecas de su aplicación. El SDK admite las siguientes bibliotecas.

Bibliotecas compatibles
  • botocore, boto3: instrumente clientes de AWS SDK for Python (Boto).

  • pynamodb: instrumente la versión de PynamoDB del cliente de Amazon DynamoDB.

  • aiobotocore, aioboto3: instrumente las versiones integradas en asyncio de los clientes del SDK para Python.

  • requests, aiohttp: instrumente clientes HTTP de alto nivel.

  • httplib, http.client: instrumente los clientes HTTP de bajo nivel y las bibliotecas de más alto nivel que los utilizan.

  • sqlite3: instrumente los clientes de SQLite.

  • mysql-connector-python: instrumente los clientes de MySQL.

  • pg8000: instrumente la interfaz PostgreSQL Pure-Python.

  • psycopg2: instrumente el adaptador de base de datos PostgreSQL.

  • pymongo: instrumente clientes de MongoDB.

  • pymysql: instrumente clientes basados en PyMySQL para MySQL y MariaDB.

Cuando la aplicación realiza llamadas a AWS, una base de datos SQL u otros servicios HTTP, el SDK registra información acerca de la llamada en un subsegmento. Los recursos y Servicios de AWS a los que accede dentro de los servicios se muestran como nodos posteriores en el mapa de rastros para ayudarle a identificar errores y problemas de limitación en conexiones individuales.

En cuanto empiece a utilizar el SDK, personalice su comportamiento configurando la grabadora y el controlador y el middleware. Puede añadir complementos para registrar los datos sobre los recursos informáticos que ejecutan su aplicación, personalizar el comportamiento de muestreo mediante la definición de reglas de muestreo y definir el nivel de log para ver más o menos información del SDK en los logs de las aplicaciones.

Registre información adicional acerca de las solicitudes y el trabajo que la aplicación realiza en anotaciones y metadatos. Las anotaciones son pares sencillos de clave-valor que se indexan para su uso con expresiones de filtro para poder buscar rastros que contengan datos específicos. Las entradas de metadatos son menos restrictivas y pueden registrar objetos y matrices completos, es decir, todo lo que se pueda serializar en JSON.

Anotaciones y metadatos

Las anotaciones y los metadatos son texto arbitrario que se agrega a los segmentos con el SDK de X-Ray. Las anotaciones se indexan para su uso con expresiones de filtro. Los metadatos no se indexan pero se pueden ver en el segmento sin procesar con la consola o la API de X-Ray. Cualquier persona a la que conceda acceso de lectura a X-Ray puede ver estos datos.

Cuando tenga muchos clientes instrumentados en su código, un único segmento de solicitud puede contener un gran número de subsegmentos, uno para cada llamada realizada con un cliente instrumentado. Puede organizar y agrupar los subsegmentos incluyendo las llamadas del cliente en subsegmentos personalizados. Puede crear un subsegmento personalizado para toda una función o cualquier sección de código. A continuación, puede registrar metadatos y anotaciones en el subsegmento en lugar de escribir todo en el segmento principal.

Para acceder a la documentación de referencia de las clases y los métodos del SDK, consulte la Referencia de la API del SDK de AWS X-Ray para Python.

Requisitos

El SDK de X-Ray para Python es compatible con los siguientes lenguajes y versiones de biblioteca.

  • Python: 2.7, 3.4 y posteriores

  • Django: 1.10 y posteriores

  • Flask: 0.10 y posteriores

  • aiohttp: 2.3.0 y posteriores

  • AWS SDK for Python (Boto): 1.4.0 y posteriores

  • botocore: 1.5.0 y posteriores

  • enum: 0.4.7 y posteriores, para Python 3.4.0 y anteriores

  • jsonpickle: 1.0.0 y posteriores

  • setuptools: 40.6.3 y posteriores

  • wrapt: 1.11.0 y posteriores

Administración de dependencias

El SDK de X-Ray para Python está disponible en pip.

  • Paquete: aws-xray-sdk

Añada el SDK como una dependencia en su archivo requirements.txt.

ejemplo requirements.txt
aws-xray-sdk==2.4.2 boto3==1.4.4 botocore==1.5.55 Django==1.11.3

Si utiliza Elastic Beanstalk para implementar su aplicación, Elastic Beanstalk instala todos los paquetes en requirements.txt de forma automática.