A instrumentação baseada em SDK exige que você habilite o agente New Relic como um SDK para o tempo de execução escolhido. Além disso, você deve configurar a extensão New Relic ou o lambda newrelic-log-ingestion para enviar dados ao New Relic.
Selecione seu tempo de execução abaixo e siga as instruções de configuração.
Para instrumentar seu Lambda da linguagem Go:
Baixe nosso pacote de agente Go e coloque-o no mesmo diretório da sua função.
Instale o agente executando:
bash$go get -u github.com/newrelic/go-agent/v3/newrelicInstale a integração
nrlambdaexecutando:bash$go get -u github.com/newrelic/go-agent/v3/integrations/nrlambda
Em seu código Lambda, importe nossos componentes, crie um aplicativo e atualize como você inicia seu Lambda. Veja nossos exemplos de instrumentação:
Opcionalmente, adicione o evento personalizado que será associado à invocação do Lambda usando a API
RecordCustomEvent. Por exemplo:func handler(ctx context.Context) {if txn := newrelic.FromContext(ctx); nil != txn {txn.Application().RecordCustomEvent("MyEvent", map[string]interface{}{"zip": "zap",})}fmt.Println("hello world!")}Crie e compacte sua função do Lambda e carregue-a na AWS.
Aqui estão sugestões para compactar e fazer upload do Lambda:
Construa o binário para execução no Linux. Isso produz um arquivo binário chamado
main. Você pode usar:bash$GOOS=linux go build -o mainCompacte o binário em um pacote de implantação usando:
bash$zip deployment.zip mainFaça upload do arquivo zip para a AWS usando o console do AWS Lambda ou a AWS CLI. Nomeie o manipulador
main(para corresponder ao nome fornecido durante a compilação binária).
Configure as variáveis de ambiente.
No seu Console de Gerenciamento AWS, na guia de configuração, adicione a tag
NR.Apm.Lambda.Mode: trueà sua função do Lambda.Invoque o Lambda pelo menos uma vez. Isso cria um grupo log do CloudWatch, que deve estar presente para que a próxima etapa funcione.
Nosso wrapper coleta dados sobre a execução do Lambda, gera uma mensagem JSON e registra-a no log do CloudWatch. A seguir, você configurará o CloudWatch para enviar esses logs para o New Relic.
O monitoramento do AWS Lambda em Java não usa nosso agente Java APM. Em vez disso, ele usa estas duas dependências do OpenTracing:
AWS Lambda OpenTracing Java SDK: instrumentação OpenTracing para AWS Lambda RequestHandler e RequestStreamHandler.
Nosso tracer AWS Lambda OpenTracing: uma implementação tracer OpenTracing projetada para monitor o AWS Lambda. Ele gera spans, eventos de erro, eventos de transação, rastreamento de erros e fornece suporte distributed tracing .
Importante
A versão 3.0.0 da biblioteca New Relic AWS Lamdba OpenTracing Java SDK fez alterações nas versões de dependência de AWS. As seguintes dependências são usadas agora:
com.amazonaws:aws-lambda-java-core:1.2.3(versão anterior: 1.1.0)com.amazonaws:aws-lambda-java-events:3.15.0(versão anterior: 2.2.7)software.amazon.awssdk:s3:2.31.43(substitui com.amazonaws:AWS-java-sdk-s3:1.12.771)software.amazon.awssdk:s3-event-notifications:2.31.43(substitui com.amazonaws:AWS-java-sdk-s3:1.12.771)É recomendável que as funções que utilizam o New Relic AWS Lamdba OpenTracing Java SDK utilizem as mesmas versões (ou versões superiores) da biblioteca subjacente AWS , conforme observado acima. As funções que não podem ser atualizadas devem permanecer na versão 2.2.0 desta biblioteca.
Dica
Supported OpenTracing Versions
OpenTracing 0.31.0:
- Tracer Lambda: com.newrelic.opentracing:newrelic-java-lambda:1.1.1
- SDK do Lambda: com.newrelic.opentracing:java-AWS Lambda:1.0.0
OpenTracing 0.32.0, 0.33.0:
- tracer lambda: com.newrelic.opentracing:newrelic-java-lambda:2.2.3
- SDK do Lambda: com.newrelic.opentracing:java-AWS Lambda:2.1.1
Para instrumentar seu Java Lambda:
No arquivo
build.gradledo seu projeto, inclua nosso tracer OpenTracing AWS Lambda e a dependência do AWS Lambda OpenTracing SDK:dependencies {compile("com.newrelic.opentracing:java-aws-lambda:2.1.1")compile("com.newrelic.opentracing:newrelic-java-lambda:2.2.3")compile("io.opentracing:opentracing-util:0.33.0")}Implemente a interface
RequestHandlerdo AWS Lambda conforme mostrado no exemplo do Java Lambda e substitua o métododoHandleRequest.No método
doHandleRequest, chame a APILambdaTracing.instrument(...)para criar um intervalo raiz para trace a execução da função do Lambda. É aqui também que você definirá sua lógica de negócio para a função do Lambda.Registre um
LambdaTracer.INSTANCEcomo o rastreador OpenTracing Global, conforme mostrado no exemplo do Java Lambda.Crie um pacote de implantação ZIP e carregue-o no AWS Lambda. Ou implantá-lo por outros meios.
No console do AWS Lambda, defina o manipulador. Para o exemplo Java Lambda, o manipulador seria
com.handler.example.MyLambdaHandler::handleRequest. ComohandleRequesté assumido, você também pode usarcom.handler.example.MyLambdaHandler.Configure as variáveis de ambiente.
No seu Console de Gerenciamento AWS, na guia de configuração, adicione a tag
NR.Apm.Lambda.Mode: trueà sua função do Lambda.Invoque o Lambda pelo menos uma vez. Isso cria um grupo log do CloudWatch, que deve estar presente para que a próxima etapa funcione.
Nosso wrapper coleta dados sobre a execução do Lambda, gera uma mensagem JSON e registra-a no log do CloudWatch. A seguir, você configurará o CloudWatch para enviar esses logs para o New Relic.
Consulte o exemplo distributed tracing do AWS Lambda para ver um projeto completo que ilustra casos de uso comuns, como:
- Distributed tracing entre função do Lambda
- Criação manual de span (também conhecida como instrumentação personalizada)
- Rastreando chamadas externas
- Adicionando atributo personalizado (também conhecido como tag) aos spans
Para instrumentar seu Node.js Lambda:
Faça download do nosso pacote de agente Node.js e coloque-o no mesmo diretório da sua função, garantindo que o agente seja instalado como uma dependência no diretório
node_modules. Use o gerenciador de pacote Node:bash$npm install newrelic --saveNo seu código Lambda, exija o módulo do agente no topo do arquivo e envolva a função do manipulador com o newrelic
setLambdaHandler. Por exemplo:- Código de exemplo para CommonJS:
const newrelic = require('newrelic');// Other module loads go under the require statement abovemodule.exports.handler = newrelic.setLambdaHandler((event, context, callback) => {// This is your handler function codeconsole.log('Lambda executed');callback();});- Código de exemplo para ES Module:
import newrelic from 'newrelic';// Other module loads go under the require statement aboveexport const handler = newrelic.setLambdaHandler((event, context, callback) => {// This is your handler function codeconsole.log('Lambda executed');callback();});Opcional: você também pode adicionar eventos personalizados ao seu Lambda usando a API
recordCustomEvent. Por exemplo:- Código de exemplo para CommonJS:
module.exports.handler = newrelic.setLambdaHandler((event, context, callback) => {newrelic.recordCustomEvent('MyEventType', { foo: 'bar' });console.log('Lambda executed');callback();});- Código de exemplo para o ES Module:
export const lambdaHandler = newrelic.setLambdaHandler((event, context, callback) => {newrelic.recordCustomEvent('MyEventType', { foo: 'bar' });console.log('Lambda executed');callback();});Compacte sua função do Lambda e a pasta do agente Node.js. Requisitos e recomendações:
- Os arquivos New Relic fora da pasta do agente New Relic não precisam ser incluídos.
- Se o nome do arquivo da função do Lambda for, por exemplo,
lambda_function.node, recomendamos nomear seu arquivo ziplambda_function.zip. Não use um tarball. - Seu Lambda e seus módulos associados devem estar todos no diretório raiz do arquivo zip. Isso significa que se você compactar uma pasta que contém os arquivos, não funcionará.
Carregue o arquivo compactado em sua conta do AWS Lambda.
Configure as variáveis de ambiente.
No seu Console de Gerenciamento AWS, na guia de configuração, adicione a tag
NR.Apm.Lambda.Mode: trueà sua função do Lambda.Para concluir a instrumentação, siga uma das seguintes etapas para enviar os dados de telemetria para o New Relic:
- Use o Lambda New Relic
Extension layer. Você pode obter a camada mais recente (NewRelicLambdaExtension) arn. Você pode usar a AWS CLI para instalar a camada ou adicioná-la manualmente ao seu Lambda.
bash$aws lambda update-function-configuration --function-name <your-lambda-function-name> --layers arn:aws:lambda:<aws-region>:451483290750:layer:NewRelicLambdaExtension:<version>- Use o Lambda New Relic
- Use o
newrelic-log-ingestion. Você pode consultar o fallback do CloudWatch para obter etapas detalhadas.
Para instrumentar seu Python Lambda:
Baixe os pacotes do agente Python e do wrapper lambda do Python e coloque-os no mesmo diretório do código de função. Para fazer isso, use pip:
bash$pip install -t . newrelic newrelic-lambdaImportante
Se você usa o Homebrew, poderá receber este erro:
DistutilsOptionError: must supply either home or prefix/exec-prefix -- not both. Para obter detalhes, consulte a postagem do Homebrew GitHub.No seu código Lambda, importe o módulo do agente Python e o módulo wrapper lambda do Python.
Decore a função do manipulador usando o decorador New Relic. O pacote New Relic deve ser importado primeiro em seu código. Aqui está um exemplo:
import newrelic.agentfrom newrelic_lambda.lambda_handler import lambda_handlernewrelic.agent.initialize()@lambda_handler()def handler(event, context):...Opcional: você também pode adicionar eventos personalizados ao seu Lambda usando a API
record_custom_event. Aqui está um exemplo:@lambda_handler()def handler(event, context):newrelic.agent.record_custom_event('CustomEvent', {'foo': 'bar'})...Compacte suas pastas
lambda_function.pyenewrelic/usando estas diretrizes:- Os arquivos New Relic fora da pasta
newrelic/não precisam ser incluídos. - Se o nome do arquivo da função do Lambda for, por exemplo,
lambda_function.py, nomeie seu arquivo ziplambda_function.zip. Não use um tarball. - Seu Lambda e seus módulos associados devem estar todos no diretório raiz do arquivo zip. Isso significa que se você compactar uma pasta que contém os arquivos, não funcionará.
- Os arquivos New Relic fora da pasta
Carregue o arquivo compactado em sua conta do AWS Lambda.
Configure as variáveis de ambiente.
No seu Console de Gerenciamento AWS, na guia de configuração, adicione a tag
NR.Apm.Lambda.Mode: trueà sua função do Lambda.Invoque o Lambda pelo menos uma vez. Isso cria um grupo log do CloudWatch, que deve estar presente para que a próxima etapa funcione.
O decorador New Relic coleta dados sobre a execução do Lambda, gera uma mensagem JSON e registra-a no log do CloudWatch. Em seguida, configure o CloudWatch para enviar esses logs para o New Relic.
Na maioria dos casos, o agente .NET irá instrumentar automaticamente sua função AWS do Lambda e mudar para um "modo serverless" que desabilitará o envio de dados diretamente para o New Relic bem como algum outro recurso. Você deve usar a extensão Lambda da New Relic ou o método lambda newrelic-log-ingestion para enviar dados para a New Relic.
Para instrumentar seu .NET Lambda:
- Adicione o pacote nuget NewRelic.Agente ao seu projeto AWS Lambda . Para obter mais informações, consulte nosso guia de instalação.
- Configure as variáveis de ambiente.
- No seu Console de Gerenciamento AWS, na guia de configuração, adicione a tag
NR.Apm.Lambda.Mode: trueà sua função do Lambda. - Publique o projeto em sua conta do AWS Lambda.
- Configure a extensão New Relic Lambda ou o lambda
newrelic-log-ingestion. - Invoque o Lambda pelo menos uma vez para verificar se há erros e garantir que os dados estejam visíveis na interface New Relic .
Encontre e use dados
Após instrumentar sua função AWS do Lambda, você poderá encontrar e usar os dados na interface do New Relic APM. Os dados estão organizados em diversas áreas principais, cada uma fornecendo diferentes insights sobre o desempenho e a saúde da sua função Lambda.
Na interface APM, você pode explorar vários aspectos da sua função Lambda, incluindo distributed tracing, mapas de serviço, transações, análise de erros e muito mais. Cada uma dessas áreas fornece insights detalhadas sobre o desempenho, a latência e a taxa de erros da sua função Lambda, permitindo que você identifique e resolva problemas rapidamente.
Dica
A experiência de invocação agora está integrada ao rastreamento de transações do APM. Isso permite que você use um AWS RequestId específico para detalhar um trace APM de transação para obter informações detalhadas sobre aquela execução Lambda específica.
Para visualizar sua função Lambda na interface do New Relic APM :
- Vá para https://one.newrelic.com > APM & Services.
- Defina os critérios de pesquisa como
isLambdaFunction = true. - Na lista exibida, selecione sua função Lambda para visualizar os dados.