AWS Lambda
Guia do desenvolvedor

Usar o AWS X-Ray

Você pode usar o AWS X-Ray para visualizar os componentes do aplicativo, identificar gargalos de desempenho e solucionar problemas de solicitações que resultaram em um erro. Suas funções do Lambda enviam dados de rastreamento para o X-Ray, e o X-Ray processa os dados para gerar um mapa de serviço e resumos de rastreamento pesquisáveis.

Se você tiver habilitado o rastreamento do X-Ray em um serviço que invoca sua função, o Lambda enviará rastreamentos para o X-Ray automaticamente. O serviço upstream, como Amazon API Gateway, ou um aplicativo hospedado no Amazon EC2 que é instrumentado com o X-Ray SDK, analisa solicitações de entrada e adiciona um cabeçalho de rastreamento que informa ao Lambda para enviar rastreamentos ou não. Para obter uma lista completa de serviços que oferecem suporte à instrumentação ativa, consulte Produtos da AWS compatíveis no Guia do desenvolvedor do AWS X-Ray.

Para rastrear solicitações que não têm um cabeçalho de rastreamento, ative o rastreamento ativo na configuração da sua função.

Para ativar o rastreamento ativo

  1. Abra a página Functions (Funções) do console do Lambda.

  2. Escolha uma função.

  3. Em AWS X-Ray, escolha Active tracing (Rastreamento ativo).

  4. Escolha Salvar.

Sua função precisa de permissão para carregar dados de rastreamento no X-Ray. Quando você habilita o rastreamento ativo no console do Lambda, o Lambda adiciona as permissões necessárias à função de execução da função. Caso contrário, adicione a política AWSXRayWriteOnlyAccess à função de execução.

O X-Ray aplica um algoritmo de amostragem para garantir que o rastreamento é eficiente, enquanto ainda fornece uma amostra representativa das solicitações que o seu aplicativo serviu. A regra de amostragem padrão é uma solicitação por segundo e 5% de solicitações adicionais.

Como usar variáveis de ambiente para se comunicar com o AWS X-Ray

O AWS Lambda usa variáveis do ambiente para facilitar a comunicação com o daemon do X-Ray e definir a configuração do SDK do X-Ray.

  • _X_AMZN_TRACE_ID: contém o cabeçalho de rastreamento de amostragem, que inclui a decisão de amostragem, o ID de rastreamento e o ID de segmento pai. (Para saber mais sobre estas propriedades, consulte Rastreamento de cabeçalho.) Se o Lambda receber um cabeçalho de rastreamento quando sua função for invocada, esse cabeçalho será usado para preencher a variável de ambiente _X_AMZN_TRACE_ID. Se um cabeçalho de rastreamento não foi recebido, o Lambda gerará um para você.

  • AWS_XRAY_CONTEXT_MISSING: o SDK do X-Ray usa esta variável para determinar seu comportamento caso a sua função tente gravar dados de X-Ray, mas um cabeçalho de rastreamento não esteja disponível. O Lambda define esse valor como LOG_ERROR por padrão.

  • AWS_XRAY_DAEMON_ADDRESS: esta variável de ambiente expõe o endereço do daemon do X-Ray no seguinte formato: IP_ADDRESS:PORT. Você pode usar o endereço do daemon do X-Ray para enviar dados de rastreamento para o daemon do X-Ray diretamente, sem usar o SDK do X-Ray.

Lambda rastreia no console do AWS X-Ray: exemplos

Veja a seguir o rastreamento do Lambda para duas diferentes funções do Lambda. Cada rastreamento demonstra uma estrutura de rastreamento para um tipo de invocação diferente: assíncrona e síncrona.

  • Assíncrona – O exemplo a seguir mostra uma solicitação assíncrona do Lambda com uma invocação bem-sucedida e uma chamada downstream para o DynamoDB.

    O segmento de serviço Lambda encapsula o tempo de resposta, que é o tempo necessário para retornar uma resposta (por exemplo, 202) ao cliente. Ele inclui subsegmentos para o tempo gasto na fila de serviço do Lambda (tempo de permanência) e para cada tentativa de invocação. (Somente uma tentativa de invocação aparece no exemplo anterior.) Cada subsegmento de tentativa no segmento de serviço terá um segmento de função de usuário correspondente. Neste exemplo, o segmento de função de usuário contém dois subsegmentos: o subsegmento de inicialização que representa o código de inicialização da função que é executado antes do manipulador e um subsegmento de chamada downstream que representa uma chamada ListTables para o DynamoDB.

    Os códigos de status e as mensagens de erro são exibidas para cada subsegmento de invocação e para cada chamada downstream.

  • Síncrona – O exemplo seguinte mostra uma solicitação síncrona com uma chamada downstream para o Amazon S3.

    O segmento de serviço do Lambda captura o tempo total que a solicitação gasta no serviço do Lambda. O segmento de serviço terá um segmento de função do usuário correspondente. Neste exemplo, o segmento de função de usuário contém dois subsegmentos representando o código de inicialização da função (código executado antes do manipulador) e um subsegmento representando a chamada PutObject para o Amazon S3.

nota

Se você deseja rastrear chamadas HTTP, é necessário usar um cliente HTTP. Para obter mais informações, consulte Rastreamento de chamadas para serviços Web HTTP downstream com o SDK do X-Ray para Java ou Rastreamento de chamadas para serviços Web HTTP downstream com o SDK do X-Ray para Node.js .