• EnglishEspañol日本語한국어Português
  • EntrarComeçar agora

Esta tradução de máquina é fornecida para sua comodidade.

Caso haja alguma divergência entre a versão em inglês e a traduzida, a versão em inglês prevalece. Acesse esta página para mais informações.

Criar um problema

Introdução ao monitoramento do AWS Lambda

À medida que sua organização faz a transição para uma arquitetura de função como serviço (FaaS) com AWS Lambda, compreender e otimizar o desempenho da função torna-se fundamental para garantir uma experiência do usuário contínua e eficiente. Cada invocação do Lambda representa um potencial gargalo ou oportunidade de melhoria.

A instrumentação da New Relic para AWS Lambda fornece visibilidade profunda do funcionamento interno de suas funções. Ao adicionar o agente New Relic à sua função, cada vez que sua função é invocada, o New Relic também o é. Você pode obter insights sobre as principais métricas de desempenho, como duração, partidas a frio, exceções e rastreamentos.

Este documento explica a arquitetura de monitoramento Lambda da New Relic e orienta você na vinculação de suas contas da AWS e da New Relic. Você deve vincular suas contas antes de poder instrumentar suas funções.

Como funciona a instrumentação Lambda

Estes são os elementos essenciais da instrumentação AWS Lambda com New Relic:

  • Sua função: sua função é o código que você deseja entender. Você quer saber quando ele encontra erros, por que está lento ou com que frequência é invocado.

  • O agente ou SDK do New Relic : Dependendo da linguagem em que sua função foi escrita, New Relic fornece diferentes agentes ou SDKs. O trabalho deles é fazer o monitoramento real do seu código. Ele mede a duração das invocações de suas funções, observa os erros que ocorrem, registra detalhes sobre o evento de origem e as respostas de suas funções. Para fazer isso, ele precisa envolver sua função de manipulador de invocação do Lambda.

  • A extensão New Relic Lambda: Quando você instrumenta a extensão New Relic Lambda em sua função, ela será executada dentro do ambiente de execução Lambda, junto com seu código. Ele aprimora a telemetria que o agente coleta e envia para o backend da New Relic em lotes. Ele também pode enviar o log da sua função para New Relic. Você não precisa da extensão Lambda para monitor sua função com New Relic.

Escolha seu método de envio

Existem três maneiras de enviar sua telemetria New Relic AWS Lambda. O método de envio que você escolher depende de suas necessidades de dados.

  • Custo: A maneira mais econômica de usar AWS Lambda é usando qualquer uma de nossas camadas, que inclui a extensão Lambda. Por padrão, nossa extensão nunca envia dados para o AWS CloudWatch.

  • Confiabilidade: você pode enviar seus dados somente pelo CloudWatch. Para fazer isso, você desabilitará a extensão Lambda do New Relic. Isso significa que sua função do Lambda será mais leve e não terá nenhum processo adicional em execução quando for invocada. Nesse caso, o log e a carga serão enviados ao New Relic por meio do CloudWatch em vez da extensão.

  • O melhor dos dois mundos: usar a extensão com o AWS CloudWatch como alternativa ajuda a manter os custos baixos e, ao mesmo tempo, fornece proteção contra falhas caso haja um problema com a extensão.

Mostraremos como instrumentar sua função do Lambda usando cada método em nossos documentos de instrumentação:

Antes de você começar

Antes de habilitar o monitoramento Serverless usando nossa camada Lambda, você precisará de:

  1. Uma conta New Relic com função de administrador ou com a função complementar de gerente de infraestrutura .

  2. Um .

  3. Uma conta AWS com permissões para criar recursos IAM, segredos gerenciados e Lambdas. Você também precisa de permissões para criar pilha do CloudFormation e buckets S3.

Então você precisará concluir o seguinte:

  1. Instale o AWS CLI v2 e configure usando aws configure. Você precisará de um AWS Access Key ID e de uma AWS Secret Access Key.

  2. Instale o Python versão 3.3 ou superior.

  3. Instale o newrelic-lambda CLI. Para instalá-lo, execute este comando:

    bash
    $
    pip3 install newrelic-lambda-cli
  4. Por padrão, usamos a política gerenciada pela AWS ReadOnlyAccess. Isso permite que a integração da infraestrutura veja todos os recursos da sua conta, e não apenas a sua função do Lambda e as métricas do CloudWatch. New Relic recomenda este padrão, mas entendemos que algumas organizações preferem uma postura de segurança rigorosa para integração de terceiros. Se você quiser limitar o acesso do New Relic, a função IAM pode ser concedida com um mínimo destas permissões:

Resource: "*"
Action:
- "cloudwatch:GetMetricStatistics"
- "cloudwatch:ListMetrics"
- "cloudwatch:GetMetricData"
- "lambda:GetAccountSettings"
- "lambda:ListFunctions"
- "lambda:ListAliases"
- "lambda:ListTags"
- "lambda:ListEventSourceMappings"
  1. Antes de executar a CLI, você precisará conceder à New Relic um mínimo destas permissões na AWS:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "CLIAccessPolicy",
"Action": [
"cloudformation:CreateChangeSet",
"cloudformation:CreateStack",
"cloudformation:DescribeStacks",
"cloudformation:ExecuteChangeSet",
"iam:AttachRolePolicy",
"iam:CreateRole",
"iam:GetRole",
"iam:PassRole",
"lambda:AddPermission",
"lambda:CreateFunction",
"lambda:GetFunction",
"logs:DeleteSubscriptionFilter",
"logs:DescribeSubscriptionFilters",
"logs:PutSubscriptionFilter",
"s3:GetObject",
"serverlessrepo:CreateCloudFormationChangeSet",
"secretsmanager:CreateSecret"
],
"Effect": "Allow",
"Resource": "*"
},
{
"Sid": "NRLogAccessPolicy",
"Effect": "Allow",
"Action": [
"serverlessrepo:CreateCloudFormationTemplate",
"serverlessrepo:GetCloudFormationTemplate"
],
"Resource": "arn:aws:serverlessrepo:us-east-1:463657938898:applications/NewRelic-log-ingestion"
}
]
}

Se quiser saber mais sobre nossa CLI, consulte nosso repositório CLI.

Recomendamos os seguintes tempos de execução:

  • Node.js: nodejs16.x, nodejs18.x, nodejs20.x
  • Python: python3.8, python3.9, python3.10, python3.11, python3.12
  • Vá: provided.al2, provided.al2023
  • Java: java8.al2, java11, java17, java21
  • Ruby: ruby3.2, ruby3.3
  • .NET: dotnet6, dotnet8

Considere os custos

Ativar o monitoramento Serverless para AWS Lambda pode resultar em cobranças da Amazon Web Services. Nossa newrelic-log-ingestion função do Lambda, que nos reporta seus dados Lambda, é considerada um serviço de terceiros: as cobranças AWS resultantes de seu uso são de sua responsabilidade.

Se você usar nossa extensão newrelic-lambda incluída em nossas Camadas LambdaNew Relic , poderá evitar o envio de log e telemetria via CloudWatch e a função newrelic-log-ingestion . Também é possível configurar a função newrelic-log-ingestion como um método de fallback do CloudWatch para funções que exigem alta disponibilidade de dados de observabilidade.

Instalar monitoramento Lambda

O monitoramento Lambda inclui:

Antes de poder receber telemetria para sua função "instrumentada" do Lambda no New Relic, você precisará vincular sua conta AWS ao New Relic. Ao vincular contas, você concede New Relic permissão para criar um inventário da sua conta AWS e coletar automaticamente métricas do CloudWatch para sua função do Lambda. Depois de vincular as contas, os recursos na sua conta AWS aparecerão como entidade no explorador de entidades. A função do Lambda entidade será encontrada na visualização sem servidor.

Configurar uma integração do AWS Metric Streams (recomendado)

Para que New Relic monitor sua função do Lambda, você precisará configurar uma integração entre New Relic e AWS. Recomendamos usar o Metric Streams para ajudar a reduzir a latência e evitar a limitação de nossas solicitações de pesquisa.

Configurar uma integração de API Polling com a AWS

Se você não estiver usando uma integração do Métrica Streams, você pode optar por configurar uma integração API Polling . Por padrão, uma integração de API Polling com o serviço Lambda habilitado pesquisará métricas do CloudWatch a cada 5 minutos.

Você pode usar o newrelic-lambda-cli para configurar uma integração API Polling, mas não uma integração métrica de Streams.

bash
$
newrelic-lambda integrations install --nr-account-id YOUR_NR_ACCOUNT_ID \
>
--nr-api-key YOUR_NEW_RELIC_USER_KEY

Uma etapa no comando integração install criará um segredo NEW_RELIC_LICENSE_KEY no AWS Secrets Manager para maior segurança. Isso é configurável com um sinalizador --disable-license-key-secret , juntamente com outras opções e sinalizadores.

Instrumente sua função Lambda

Há várias maneiras de adicionar instrumentação à sua função Lambda. Para instrumentação "sem alteração de código", use uma camada New Relic. Você pode adicionar a camada diretamente à sua função Lambda ou incluí-la no seu dockerfile. Cada camada, exceto a camada de extensão, inclui um agente, um wrapper de manipulador e uma extensão para envio de carga útil e log.

O newrelic-lambda-cli é o método mais rápido e fácil de adicionar uma camada Lambda do New Relic. Geralmente é usado para testes e não para CI/CD.

Para adicionar uma camada New Relic por meio do seu pipeline de CI/CD existente, temos um plugin Serverless Framework junto com exemplos para SAM e Terraform.

Para melhor desempenho ou para integrar melhor o New Relic ao código da sua função, você pode usar instrumentação sem camadas para todos os tempos de execução, exceto Ruby.

Configure sua função do Lambda

Depois de instrumentar sua função, verifique no console da AWS para garantir que a configuração esteja correta.

Veja a próxima etapa para obter variáveis de ambiente mais comumente usadas por tempo de execução.

Variáveis ambientais

Ao instrumentar a camada Lambda do New Relic com a CLI, suas variáveis de ambiente serão configuradas automaticamente. Talvez você queira alterar algumas das configurações padrão e configurar sua função do Lambda com as variáveis de ambiente que correspondem às suas necessidades de monitoramento. Escolha seu tempo de execução para ver as variáveis de ambiente disponíveis e nossas recomendações para configurações padrão.

Experimente nossas funções de exemplo

Depois de instrumentar a camada Lambda do New Relic, recomendamos fortemente experimentar nossas funções de exemplo. Esses exemplos de trabalho devem ser usados como ponto de partida para instrumentar sua própria função serverless. O uso desses exemplos pode ajudá-lo a se familiarizar com a camada New Relic Lambda, testando o link da conta, e eles podem ser usados como referência para sua própria instrumentação. Each example demonstrates adding permissions, runtime-specific techniques for wrapping your handler, managing function log retention in CloudWatch, and more.

Embora existam muitas maneiras de gerenciar e implantar a função do Lambda, AWS CloudFormation é o mecanismo que usamos em nossos exemplos.

Nossos exemplos são publicados, juntamente com a extensão New Relic Lambda, neste repositório GitHub. Há um para cada tempo de execução do Lambda que o New Relic suporta:

  • Node.js

  • Python

  • Go

  • Java

  • Ruby

  • .NET

    Você também pode aprender como transformar distributed tracing em um aplicativo sem servidor não trivial em nosso exemplodistributed tracing . Ele ilustra a propagação manual trace para SQS e SNS, dois dos serviços mais populares que podem invocar a função do Lambda, com funções Node, Python, Ruby e Java.

    Dica

    Ao testar manualmente, os dados de telemetria podem ser atrasados. Recomendamos aguardar sete segundos antes de invocar a função novamente, permitindo que qualquer telemetria armazenada em buffer seja entregue.

Resolução de problemas

Se você tiver problemas instrumentados em sua função do Lambda, aqui estão algumas dicas comuns de resolução de problemas:

Qual é o próximo

Containerized Lambda functions

Se você possui a função do Lambda conteinerizada, clique aqui para instrumento.

Non-containerized Lambda functions

Se você possui função do Lambda não conteinerizada, clique aqui para instrumento.

Layerless Lambda functions

Se você possui a função do Lambda sem camadas, clique aqui para instrumento.

Copyright © 2024 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.