Instrumentação do código Go no AWS Lambda - AWS Lambda

Instrumentação do código Go no AWS Lambda

O Lambda se integra ao AWS X-Ray para permitir que você rastreie, depure e otimize aplicativos do Lambda. É possível usar o X-Ray para rastrear uma solicitação à medida que ela atravessa recursos no aplicativo, da API front-end ao armazenamento e aos banco de dados no back-end. Ao simplesmente adicionar a biblioteca SDK do X-Ray à configuração de compilação, é possível registrar erros e latência para qualquer chamada que a função faça para um serviço da AWS.

O mapa de serviço do X-Ray mostra o fluxo de solicitações por meio do aplicativo. O exemplo a seguir do aplicativo de exemplo processador de erros mostra um aplicativo com duas funções. A função principal processa eventos e, às vezes, retorna erros. A segunda função processa erros que aparecem no primeiro grupo de logs e usa o AWS SDK para chamar o X-Ray, o Amazon S3 e o Amazon CloudWatch Logs.


          Service map showing nodes for Lambda functions, X-Ray, Amazon S3 and CloudWatch Logs

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 Save (Salvar).

Definição de preços

O X-Ray tem um nível gratuito vitalício. Além do limite do nível gratuito, o X-Ray cobra por armazenamento e recuperação de rastreamento. Para obter detalhes, consulte Definição de preço do AWS X-Ray.

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 AWSXRayDaemonWriteAccess à 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.

Quando o rastreamento ativo está habilitado, o Lambda registra um rastreamento para um subconjunto de invocações. O Lambda registra dois segmentos, o que cria dois nós no mapa de serviço. O primeiro nó representa o serviço Lambda que recebe a solicitação de invocação. O segundo nó é gravado pelo tempo de execuçãoda função.


      Um mapa de serviço do X-Ray com uma única função.

É possível instrumentar o código do manipulador para gravar metadados e rastrear chamadas downstream. Para registrar detalhes sobre chamadas feitas pelo manipulador para outros recursos e serviços, use o SDK para Go do X-Ray. Faça download do SDK de seu Repositório do GitHub com go get:

$ go get github.com/aws/aws-xray-sdk-go

Para instrumentar clientes do AWS SDK, passe o cliente para o método xray.AWS().

xray.AWS(s3.Client)

O exemplo a seguir mostra um rastreamento com 2 segmentos. Ambos são chamados my-function, mas um é do tipo AWS::Lambda e o outro é AWS::Lambda::Function. O segmento de função é expandido para mostrar seus subsegmentos.

O primeiro segmento representa a solicitação de invocação processada pelo serviço do Lambda. O segundo segmento registra o trabalho realizado pela sua função. O segmento de função tem 3 subsegmentos.

  • Inicialização – representa o tempo gasto carregando a função e executando o código de inicialização. Esse subsegmento só aparece para o primeiro evento processado por cada instância da função.

  • Invocação – representa o trabalho realizado pelo código do manipulador. Ao instrumentar o código, é possível estender esse subsegmento com subsegmentos adicionais.

  • Sobrecarga – representa o trabalho realizado pelo tempo de execução do Lambda para se preparar para lidar com o próximo evento.

Você também pode instrumentar clientes HTTP, registrar consultas SQL e criar subsegmentos personalizados com anotações e metadados. Para obter mais informações, consulte O SDK para Go do X-Ray no Guia do desenvolvedor do AWS X-Ray.

Habilitar o rastreamento ativo com a API do Lambda

Para gerenciar a configuração de rastreamento com a AWS CLI ou com o AWS SDK, use as seguintes operações de API:

O exemplo de comando da AWS CLI a seguir habilita o rastreamento ativo em uma função chamada my-function.

$ aws lambda update-function-configuration --function-name my-function \ --tracing-config Mode=Active

O modo de rastreamento faz parte da configuração específica da versão que é bloqueada quando você publica uma versão da função. Não é possível alterar o modo de rastreamento em uma versão publicada.

Habilitar o rastreamento ativo com o AWS CloudFormation

Para habilitar o rastreamento ativo em um recurso AWS::Lambda::Function em um modelo do AWS CloudFormation, use a propriedade TracingConfig.

exemplo function-inline.yml – configuração de rastreamento

Resources: function: Type: AWS::Lambda::Function Properties: TracingConfig: Mode: Active ...

Para um recurso do Modelo de aplicativo sem servidor da AWS (AWS SAM) AWS::Serverless::Function, use a propriedade Tracing.

exemplo template.yml – configuração de rastreamento

Resources: function: Type: AWS::Serverless::Function Properties: Tracing: Active ...