Uso do AWS Lambda com a AWS X-Ray - AWS Lambda

Uso do AWS Lambda com a AWS X-Ray

Você pode usar o AWS X-Ray para visualizar os componentes do aplicativo, identificar gargalos de performance 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 uma aplicação hospedada no Amazon EC2 que é instrumentada 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 alternar o rastreamento ativo na sua função do Lambda usando o console, siga as etapas abaixo:

Para ativar o rastreamento ativo

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

  2. Escolha uma função.

  3. Escolha Configuration (Configuração) e depois Monitoring and operations tools (Ferramentas de monitoramento e operações).

  4. Escolha Edit (Editar).

  5. Em X-Ray, ative a opção Active tracing (Rastreamento ativo).

  6. Escolha Save (Salvar).

Preços

Você pode usar o rastreamento do X-Ray gratuitamente todos os meses até determinado limite como parte do nível gratuito da AWS. Além do limite, o X-Ray cobra por armazenamento e recuperação de rastreamento. Para obter mais informações, consulte Preço do AWS X-Ray.

Sua função precisa de permissão para carregar dados de rastreamento no X-Ray. Quando você ativa 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 não rastreia todas as solicitações para sua aplicação. O X-Ray aplica um algoritmo de amostragem para garantir que o rastreamento seja eficiente, enquanto ainda fornece uma amostra representativa das solicitações. A taxa de amostragem é uma solicitação por segundo e 5% de solicitações adicionais.

nota

Não é possível configurar a taxa de amostragem do X-Ray para suas funções.

No X-Ray, um rastreamento registra informações sobre uma solicitação que é processada por um ou mais serviços. Registro de serviçosSegmentos doque contêm camadas deSubsegmentos. O Lambda registra um segmento para o serviço do Lambda que lida com a solicitação de invocação e um para o trabalho realizado pela função. O segmento de função vem com subsegmentos para Initialization, Invocation e Overhead. Para obter mais informações, consulte Lambda execution environment lifecycle (Ciclo de vida do ambiente de execução do Lambda).

O subsegmento Initialization representa a fase inicial do ciclo de vida do ambiente de execução do Lambda. Durante essa fase, Lambda cria ou descongela um ambiente de execução com os recursos configurados, faz download do código da função e de todas as camadas, inicializa extensões, inicializa o tempo de execução e executa o código de inicialização da função.

O subsegmento Invocation representa a fase de chamada em que o Lambda chama o manipulador de função. Isso começa com o registro do tempo de execução e da extensão e termina quando o tempo de execução está pronto para enviar a resposta.

O subsegmento Overhead representa a fase que ocorre entre o momento em que o tempo de execução envia a resposta e o sinal para a próxima chamada. Durante esse período, o tempo de execução termina todas as tarefas relacionadas a uma chamada e se prepara para congelar o sandbox.

nota

Se sua função do LambdaSimultaneidade provisionada, o rastreamento de X-Ray pode exibir uma inicialização de função com uma duração muito longa.

A simultaneidade provisionada inicializa instâncias de função com antecedência, para reduzir o atraso no momento da invocação. Ao longo do tempo, a simultaneidade provisionada atualiza essas instâncias criando novas instâncias para substituir as antigas. Para cargas de trabalho com tráfego estável, as novas instâncias são inicializadas bem antes de sua primeira chamada. O intervalo de tempo é registrado no rastreamento de X-Ray como a duração da inicialização.

Importante

No Lambda, é possível usar o X-Ray SDK para estender o subsegmento Invocation com subsegmentos adicionais para anotações, metadados e chamadas downstream. Não é possível acessar o segmento de função diretamente nem registrar trabalhos feitos fora do escopo de chamada do manipulador.

Consulte os tópicos a seguir para obter uma introdução específica de uma linguagem ao rastreamento no Lambda:

Para obter uma lista completa de serviços que oferecem suporte à instrumentação ativa, consulte Serviços da AWS compatíveis no Guia do desenvolvedor do AWS X-Ray.

Permissões da função de execução

O Lambda precisa das permissões a seguir para enviar dados de rastreamento para o X-Ray. Adicione-as à função de execução da sua função.

Essas permissões estão incluídas na política gerenciada AWSXRayDaemonWriteAccess.

O daemon do AWS X-Ray

Em vez de enviar dados de rastreamento diretamente para a API do X-Ray, o X-Ray SDK usa um processo do daemon. O daemon do AWS X-Ray é uma aplicação que é executada no ambiente do Lambda e escuta o tráfego UDP que contém segmentos e subsegmentos. Ele armazena em buffer os dados recebidos e os grava no X-Ray em lotes, reduzindo a sobrecarga de processamento e memória necessária para rastrear invocações.

O tempo de execução do Lambda permite ao daemon até 3% da memória configurada da sua função ou 16 MB, o que for maior. Se sua função ficar sem memória durante a invocação, o tempo de execução encerrará o processo do daemon primeiro para liberar memória.

O processo do daemon é totalmente gerenciado pelo Lambda e não pode ser configurado pelo usuário. Todos os segmentos gerados por invocações de função são registrados na mesma conta que a função do Lambda. O daemon não pode ser configurado para redirecioná-los para nenhuma outra conta.

Para obter mais informações, consulte The X-Ray daemon no Guia do desenvolvedor do 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 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 ativar 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 AWS Serverless Application Model (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 ...