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 Python para aplicativos Web que fornece classes e métodos para gerar e enviar dados de rastreamento para o daemon X-Ray. Os dados de rastreamento incluem informações sobre solicitações HTTP recebidas pelo aplicativo e chamadas que o aplicativo faz para serviços downstream usando o AWS SDK, 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 e enviar problemas e pull requests em 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.

Veja um Operador exemplo de Python função 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 — AWS SDK for Python (Boto) Clientes de instrumentos.

  • 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— Instrumente clientes baseados em PyMy SQL para MySQL e MariaDB.

Sempre que seu aplicativo faz chamadas para AWS um banco de dados SQL ou outros serviços HTTP, o SDK registra as informações sobre a chamada em um subsegmento. Serviços da AWS e os recursos que você acessa nos serviços aparecem como nós downstream no mapa de rastreamento para ajudá-lo a identificar erros e problemas de limitaçã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 ver a documentação de referência sobre as classes e métodos do SDK, consulte o AWS X-Ray SDK for Python API Reference.

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 recentes, para Python versões 3.4.0 e anteriores

  • 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.