O blog da AWS

Otimizando o comportamento de amostragem de rastreamento para funções do AWS Lambda com o AWS X-Ray

Escrito por Joshua Smith, Sr. Solutions Architect e Shridhar Pandey, Sr. PMT, Lambda.

O rastreamento eficaz permite que desenvolvedores e operadores identifiquem rapidamente gargalos de desempenho, solucionem problemas além dos limites do serviço e garantam experiências ideais para o usuário final. Isso o torna crucial para manter e otimizar aplicativos distribuídos Serverless. Este blog post explora a importância do rastreamento distribuído para operar aplicativos Serverless e anuncia uma atualização importante no comportamento de rastreamento do AWS Lambda, que simplifica a forma como o contexto de rastreamento é tratado no modo PassThrough. Este blog post demonstrará como essa mudança oferece a você um melhor controle sobre como suas funções do Lambda lidam com o rastreamento com o AWS X-Ray por meio de exemplos práticos. Se você está criando novos aplicativos ou operando os existentes, essa atualização ajuda você a obter um rastreamento mais previsível e eficiente em seus aplicativos serverless criados usando o Lambda.

Visão geral

Aplicativos distribuídos Serverless que abrangem vários serviços da AWS exigem monitoramento robusto à medida que se expandem. As abordagens tradicionais de solução de problemas são insuficientes devido à natureza efêmera do Lambda, dificultando que as equipes de desenvolvimento rastreiem solicitações entre componentes, entendam os gargalos de desempenho e otimizem os custos eliminando invocações de funções desnecessárias. Sem visibilidade de ponta a ponta, os problemas de produção se tornam cada vez mais demorados para serem resolvidos.

O X-Ray aborda esses desafios de observabilidade fornecendo poderosos recursos de rastreamento distribuído que ajudam os desenvolvedores a entender como suas funções do Lambda interagem com outros serviços da AWS e a identificar problemas de desempenho. À medida que as arquiteturas Serverless aumentam em complexidade, ter um controle refinado sobre o comportamento de rastreamento se torna crucial para manter estratégias de observabilidade eficientes e econômicas que permitem que as equipes operem com eficiência as cargas de trabalho de produção.

O Lambda e o X-Ray têm aprimorado constantemente os recursos de rastreamento nos últimos anos para melhorar a observabilidade de aplicativos serverless. Em novembro de 2022, o X-Ray introduziu a vinculação de rastreamento entre o Amazon Simple Queue Service (Amazon SQS) e o Lambda, permitindo o rastreamento de ponta a ponta para aplicativos orientados a eventos. Em fevereiro de 2023, o X-Ray adicionou suporte de rastreamento ativo para o Amazon Simple Notification Service (Amazon SNS), permitindo que você rastreie mensagens que fluem pelos tópicos do SNS até as funções do Lambda. Em maio de 2023, o X-Ray adicionou suporte de rastreamento às funções Lambda habilitadas para SnapStart, ajudando você a solucionar problemas e otimizar o desempenho de aplicativos Java sensíveis à latência criados usando funções habilitadas para SnapStart. Em novembro de 2023, a Lambda lançou uma experiência unificada no console Lambda que reúne métricas, registros e rastreamentos em uma única visualização, permitindo que você solucione problemas e otimize suas funções de forma mais direta.

Com base nesses aprimoramentos, o Lambda agora implementou um comportamento simplificado de amostragem de traços, que oferece melhor controle sobre como suas funções lidam com o rastreamento com o X-Ray. Esse lançamento faz uma mudança importante no comportamento de rastreamento no Lambda quando a configuração de rastreamento é definida para o modo PassThrough. Com esse lançamento, o Lambda propaga o contexto de rastreamento como está, sem nenhuma modificação no modo PassThrough. Isso significa que o Lambda não criará nenhum segmento de rastreamento ou subsegmento para funções definidas no modo PassThrough, mesmo que a invocação recebida contenha a decisão de coletar a solicitação. No entanto, o serviço Lambda propaga o contexto de rastreamento conforme recebido pela função.

Essa alteração no modo X-Ray PassThrough para Lambda oferece mais controle e previsibilidade sobre sua configuração de rastreamento. Isso permite que você otimize sua estratégia de rastreamento e compreenda melhor o desempenho e o comportamento de seus aplicativos serverless. Esta postagem mostra três cenários diferentes para demonstrar o novo comportamento de rastreamento.

Entendendo o comportamento do rastreamento Lambda/X-Ray: antes e depois

O rastreamento no Lambda com o X-Ray é uma ferramenta poderosa para obter informações sobre o desempenho e o comportamento de aplicativos Serverless. A ativação do rastreamento permite identificar gargalos, solucionar problemas e otimizar suas funções do Lambda. O Lambda oferece suporte a dois modos de rastreamento para X-Ray: Active e PassThrough. Com o rastreamento Active, o Lambda cria automaticamente segmentos de rastreamento para invocações de funções e os envia para o X-Ray. Por outro lado, o modo PassThrough propaga o contexto de rastreamento para os serviços downstream.

Anteriormente, se você ativasse o rastreamento em um serviço upstream que invocasse sua função, o Lambda seguiria essa decisão de amostragem e enviaria rastreamentos para o X-Ray automaticamente, mesmo no caso em que a função Lambda estivesse configurada para usar o modo PassThrough. A figura a seguir mostra esse processo. Esse comportamento pode resultar em segmentos de rastreamento inesperados, o que pode se tornar uma sobrecarga, principalmente em cenários de alto rendimento.

Figura 1. Comportamento anterior: o Lambda envia rastreamentos para o X-Ray mesmo quando a configuração de rastreamento de função está definida como PassThrough

O modo X-Ray PassThrough atualizado para Lambda fornece uma experiência de rastreamento mais intuitiva e consistente. Agora você pode esperar que o Lambda respeite o contexto de rastreamento de entrada (se ele existir) e o propague sem nenhuma modificação. Por sua vez, os serviços downstream podem tomar suas próprias decisões de rastreamento com base em sua configuração. A figura a seguir mostra esse comportamento atualizado.

Figura 2. Novo comportamento: quando a configuração do rastreamento de funções é definida como PassThrough, o Lambda não envia rastreamentos para o X-Ray nem modifica a decisão de amostragem

Configuração de rastreamento de passagem com amostragem ascendente

Para configurar sua função Lambda para usar o modo de rastreamento PassThrough no console, conclua as seguintes etapas:

  1. No console do Lambda, navegue até sua função.
  2. Na guia Configuração, escolha Ferramentas de monitoramento e operações no painel esquerdo.
  3. Confirme se o rastreamento ativo do X-Ray aparece como Não ativado. Se estiver ativado, escolha Editar.
  4. Em X-Ray, desative o Rastreamento ativo e escolha Salvar, conforme mostrado na figura a seguir.

Figura 3. Console Lambda mostrando a função com o rastreamento ativo desativado

Você também pode usar a AWS Command Line Interface (AWS CLI) para alcançar a configuração mencionada acima:

aws lambda update-function-configuration --function-name YOUR_FUNCTION_NAME --tracing-config Mode=PassThrough

Essa configuração permite que sua função Lambda propague o contexto de rastreamento recebido do serviço upstream sem nenhuma alteração. Se você estava usando essa configuração anteriormente, não verá mais segmentos de rastreamento criados pela função Lambda no console do X-Ray. Essa configuração é útil quando você deseja propagar o contexto de rastreamento sem gerar segmentos de rastreamento, em cenários que precisam ser otimizados para custos de rastreamento ou despesas gerais. A figura a seguir mostra o fluxo de trabalho.

Figura 4. Um mapa de rastreamento que mostra a função Lambda UpstreamFunction não é exibido no mapa de rastreamento, porque está configurado para usar o modo de rastreamento PassThrough após essa alteração

Se você quiser ver segmentos de rastreamento para sua função Lambda, precisará definir o modo de rastreamento como Ativo.

Configuração de rastreamento ativo

Quando você configura sua função do Lambda para usar o modo de rastreamento ativo e se não houver uma decisão de amostragem da solicitação upstream, o Lambda coleta amostras das solicitações na taxa de uma solicitação por segundo e 5% das solicitações adicionais. Se houver uma decisão de não amostrar, a Lambda respeita essa decisão de amostragem.

Para configurar sua função Lambda para usar o modo de rastreamento ativo, conclua as seguintes etapas:

  1. No console Lambda, navegue até a seção AWS X-Ray na página de configuração da função Lambda, conforme descrito na seção anterior.
  2. Ative o rastreamento ativo e escolha Salvar, conforme mostrado na figura a seguir.

Figura 5: Console Lambda mostrando o rastreamento ativo ativado

Você também pode usar o AWS CLI para definir essa configuração:

aws lambda update-function-configuration --function-name YOUR_FUNCTION_NAME --tracing-config Mode=Active

Com o modo de rastreamento ativo, você sempre pode ver rastreamentos de amostras de solicitações para sua função Lambda no console do X-Ray. Esse modo é particularmente útil quando você deseja ter visibilidade completa do desempenho e do comportamento da sua função Lambda. A figura a seguir mostra o fluxo de trabalho das funções Lambda upstream e downstream com o rastreamento ativo ativado.

Figura 6. Um mapa de rastreamento mostrando as funções Lambda upstreamFunction e downstreamFunction. Isso ocorre porque ambas as funções têm o rastreamento ativo ativado.

A captura de tela a seguir mostra um rastreamento completo correspondente ao fluxo de trabalho de rastreamento anterior com funções Lambda upstream e downstream. Os insights detalhados obtidos com o rastreamento abrangente podem ser inestimáveis para a solução de problemas, a otimização do desempenho e a compreensão do comportamento de ponta a ponta de seu aplicativo Serverless.

Figura 7. Um rastreamento completo correspondente ao mapa de rastreamento anterior com funções Lambda upstream e downstream

Configuração de rastreamento de passagem sem amostragem inicial

Quando você configura sua função do Lambda para usar o modo de rastreamento PassThrough e o serviço upstream tem a amostragem desativada, o Lambda continua a propagar o contexto de rastreamento sem nenhuma modificação e sem gerar rastreamentos.

Para configurar sua função Lambda para usar o modo de rastreamento PassThrough, conclua as seguintes etapas:

  1. No console Lambda, navegue até a seção AWS X-Ray na página de configuração da função Lambda.
  2. Em X-Ray, desative o Rastreamento ativo e escolha Salvar, conforme mostrado na figura a seguir.

Figura 8. Console Lambda mostrando rastreamento ativo desativado

Essa configuração permanece a mesma na configuração atualizada do PassThrough e é particularmente útil quando você deseja permitir que os serviços downstream tomem suas próprias decisões de rastreamento.

Conclusão

O novo comportamento simplificado de amostragem de rastreamento para funções do AWS Lambda oferece mais controle e flexibilidade sobre os insights sobre seus aplicativos. Se você optar por usar o modo PassThrough com amostragem upstream ativada ou desativada, ou o modo de rastreamento ativo, agora você pode configurar suas funções do Lambda para lidar com o rastreamento da forma que melhor atenda às necessidades do seu aplicativo.

Essa atualização permite que você otimize sua configuração de rastreamento, equilibre os custos e benefícios do rastreamento e obtenha informações valiosas sobre o desempenho e o comportamento de seus aplicativos Serverless.

Essa mudança no comportamento de rastreamento agora se aplica a todas as funções novas e existentes em todas as regiões da AWS onde o Lambda e o AWS X-Ray estão disponíveis, sem nenhum custo adicional. Para saber mais sobre o novo comportamento de amostragem de rastreamento do Lambda, consulte o post Visualize invocações de funções do Lambda usando o AWS X-Ray.

Para obter mais recursos de aprendizado serverless, visite Serverless Land.

Este blog é uma tradução do conteúdo original em inglês (link aqui).

Biografia dos Autores

Joshua Smith, Sr. Solutions Architect
Shridhar Pandey, Sr. PMT, Lambda

Biografia do Tradutor

Rodrigo Peres é Arquiteto de Soluções na AWS, com mais de 20 anos de experiência trabalhando com arquitetura de soluções, desenvolvimento de sistemas e modernização de sistemas legados.

Biografia do Revisor

Daniel Abib é arquiteto de soluções sênior na AWS, com mais de 25 anos trabalhando com gerenciamento de projetos, arquiteturas de soluções escaláveis, desenvolvimento de sistemas e CI/CD, microsserviços, arquitetura Serverless & Containers e segurança. Ele trabalha apoiando clientes corporativos, ajudando-os em sua jornada para a nuvem.

https://www.linkedin.com/in/danielabib/