AWS X-Ray SDK para Python - AWS X-Ray

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

AWS X-Ray SDK para Python

O X-Ray SDK para Python é uma biblioteca para aplicações web do Python que fornece classes e métodos para gerar e enviar dados de rastreamento ao daemon do X-Ray. Os dados de rastreamento incluem informações sobre as solicitações HTTP de entrada atendidas pela aplicação e as chamadas que a aplicação faz para serviços subsequentes usando o SDK da AWS, clientes HTTP ou um conector de banco de dados SQL. Você também pode criar segmentos manualmente e adicionar informações de depuração em anotações e metadados.

Você pode baixar o SDK com o pip.

$ pip install aws-xray-sdk
nota

O X-Ray SDK para Python é um projeto de código aberto. Você pode acompanhar o projeto, além de enviar problemas e puxar solicitações no GitHub: github.com/aws/aws-xray-sdk-python

Se você usa o Django ou o Flask, comece adicionando middleware do SDK ao seu aplicativo para rastrear solicitações recebidas. O middleware cria um segmento para cada solicitação rastreada e conclui o segmento quando a resposta é enviada. Embora o segmento esteja aberto, você pode usar os métodos do cliente do SDK para adicionar informações ao segmento e criar subsegmentos para rastrear as chamadas subsequentes. O SDK também registra automaticamente exceções que seu aplicativo lança enquanto o segmento está aberto. Para outros aplicativos, você pode criar segmentos manualmente.

Para funções do Lambda chamadas por uma aplicação ou um serviço instrumentado, o Lambda lê o cabeçalho de rastreamento e rastreia automaticamente as solicitações amostradas. Para outras funções, você pode configurar o Lambda para amostrar e rastrear solicitações recebidas. Em ambos os casos, o Lambda cria o segmento e o fornece ao X-Ray SDK.

nota

No Lambda, o X-Ray SDK é opcional. Se você não o usar em sua função, mesmo assim o mapa de serviço incluirá um nó para o serviço Lambda e um para cada função do Lambda. Ao adicionar o SDK, você pode instrumentar o código da função para adicionar subsegmentos ao segmento de função registrado pelo Lambda. Consulte AWS Lambda e AWS X-Ray Para mais informações.

Consulte Operador para ver um exemplo de função do Python instrumentada no Lambda.

Em seguida, use o X-Ray SDK para Python para instrumentar chamadas subsequentes aplicando patches às bibliotecas da aplicação. O SDK é compatível com as seguintes bibliotecas.

Bibliotecas com suporte
  • botocore, boto3: instrumentar clientes do AWS SDK for Python (Boto).

  • pynamodb: instrumentar a versão do PynamoDB de clientes do Amazon DynamoDB.

  • aiobotocore, aioboto3: instrumentar as versões integradas ao asyncio de clientes do SDK para Python.

  • requests, aiohttp: instrumentar clientes HTTP de nível superior.

  • httplib, http.client: instrumentar clientes HTTP de nível inferior e as bibliotecas de nível superior que os utilizam.

  • sqlite3: instrumentar clientes do SQLite.

  • mysql-connector-python: instrumentar clientes do MySQL.

  • pg8000: instrumentar a interface PostgreSQL Pure-Python.

  • psycopg2: instrumentar o adaptador de banco de dados PostgreSQL.

  • pymongo: instrumentar clientes do MongoDB.

  • pymysql: instrumentar clientes baseados em PyMySQL para MySQL e MariaDB.

Sempre que a aplicação faz uma chamada para a AWS, um banco de dados SQL ou outros serviços HTTP, o SDK registra informações sobre a chamada em um subsegmento. Os Serviços da AWS e os recursos que você acessa dentro dos serviços aparecem como nós subsequentes no mapa de rastreamento para ajudar a identificar erros e problemas de controle de utilização em conexões individuais.

Depois que você começar a usar o SDK, personalize o comportamento dele configurando o gravador e o middleware. Você pode adicionar plug-ins para registrar dados sobre os recursos de computação que executam sua aplicação, personalizar o comportamento de amostragem, estipulando regras de amostragem, e definir o nível de log para ver mais ou menos informações do SDK nos logs da aplicação.

Registre informações adicionais sobre as solicitações e o trabalho que o a aplicação faz em anotações e metadados. Anotações são simples pares de chave-valor que são indexados para serem usados com expressões de filtro para que você possa pesquisar rastreamentos que contêm dados específicos. As entradas de metadados são menos restritivas e podem registrar matrizes e objetos inteiros: tudo o que pode ser serializado em JSON.

Anotações e metadados

Anotações e metadados são textos arbitrários que você adiciona aos segmentos com o X-Ray SDK. As anotações são indexadas para serem usadas com expressões de filtro. Os metadados não são indexados, mas podem ser visualizados no segmento bruto com o console ou a API do X-Ray. Qualquer pessoa à qual você conceder acesso de leitura ao X-Ray poderá visualizar esses dados.

Quando há uma grande quantidade de clientes instrumentados no código, um único segmento de solicitação pode conter um grande número de subsegmentos, um para cada chamada feita com um cliente instrumentado. Você pode organizar e agrupar subsegmentos integrando chamadas de clientes em subsegmentos personalizados. Você pode criar um subsegmento personalizado para uma função inteira ou qualquer seção do código. Você pode, então, gravar metadados e anotações no subsegmento em vez de gravar tudo no segmento pai.

Para documentação de referência para as classes e métodos do SDK, consulte a Referência de API do AWS X-Ray X-Ray SDK para Python.

Requisitos

O X-Ray SDK para Python é compatível com as versões de linguagem e biblioteca a seguir.

  • Python: 2.7, 3.4 e mais recente

  • Django: 1.10 e mais recente

  • Flask: 0.10 e mais recente

  • aiohttp: 2.3.0 e mais recente

  • AWS SDK for Python (Boto): 1.4.0 e mais recente

  • botocore: 1.5.0 e mais recente

  • enum: 0.4.7 e mais recente, para Python versões 3.4.0 e mais antigas

  • jsonpickle: 1.0.0 e mais recente

  • setuptools: 40.6.3 e mais recente

  • wrapt: 1.11.0 e mais recente

Gerenciar dependências

O X-Ray SDK para Python está disponível em pip.

  • Pacote: aws-xray-sdk

Adicione o SDK como uma dependência em seu arquivo requirements.txt.

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

Se você usa o Elastic Beanstalk para implantar a aplicação, todos os pacotes são instalados automaticamente em requirements.txt.