Esta é a primeira etapa para habilitar o monitoramento AWS Lambda da New Relic.
Ao vincular sua conta AWS ao New Relic, você está concedendo permissão ao New Relic para criar um inventário de sua conta AWS e coletar métricas do CloudWatch para sua função do Lambda. Os recursos da sua conta AWS aparecem como entidade no entidade explorer, decorados com informações de configuração.
Para que o monitoramento serverless da função Lambda funcione, é necessária uma API Polling ou integração métrica Streams . Você pode configurar sua escolha de integração antes de iniciar a vinculação da conta ou pode deixar a CLI instalar a integração do API Polling para você.
Nesta etapa de integração, também armazenaremos seu New Relic no serviço AWS Secrets Manager, para que possamos enviar sua telemetria para sua conta New Relic.
Método recomendado: a CLI newrelic-lambda
Requisitos
Para habilitar o monitoramento Serverless usando nossa camada Lambda, você precisa do seguinte:
AWS CLI v2 instalada e configurada usando
aws configure
.Python versão 3.3 ou superior instalada.
CLI newrelic-lambda, que você pode instalar executando
pip3 install newrelic-lambda-cli
.Uma conta New Relic . Você deve ter uma função de administrador ou ter a função complementar
Infrastructure manager
.
Um
.
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.
Para obter detalhes detalhados sobre a CLI, consulte nosso repositório CLI.
Integrar com CLI
Como o monitoramento serverless da função Lambda requer uma integração de API Polling ou métrica Streams , a CLI instalará automaticamente o API Polling se não encontrar uma integração. Se você preferir Streams métricos, instale-os agora antes de executar a CLI.
Quando todos os requisitos estiverem atendidos, vincule sua conta AWS à sua conta New Relic executando o seguinte comando usando sua chave de usuário (substitua todos os valores destacados):
newrelic-lambda integrations install --nr-account-id YOUR_NR_ACCOUNT_ID \
--nr-api-key YOUR_NEW_RELIC_USER_KEY
A CLI newrelic-lambda
adiciona sua New Relic como um segredo no AWS Secret Manager para maior segurança.
Dica
Storing the New Relic license key in the AWS Secrets Manager
Seu identifica e autentica você na New Relic, permitindo-nos associar sua telemetria à sua conta New Relic. Cada função que envia telemetria precisa de acesso a este valor e precisa ser gerenciada com segurança. O AWS Secrets Manager resolve esses problemas.
Se sua organização impedir que você use o AWS Secrets Manager ou se você precisar armazenar mais de um segredo por região, veja abaixo um método alternativo para definir sua chave de licença.
Método alternativo
Este documento ajudou você na instalação?
Resolução de problemas
Para uma série de guias de resolução de problemas para Lambda, consulte estas postagens em nosso Fórum de suporte:
- Conhecimento geral Parte 1
- Conhecimento geral Parte 2
- Detalhes de instalação por método
- Resolução de problemas Lambda Parte 1
- Resolução de problemas Lambda Parte 2
Aqui estão mais detalhes sobre outros problemas e soluções.
Não é possível usar o gerenciador de segredos da AWS
Se sua organização não permitir o uso do AWS Secrets Manager, a extensão New Relic Lambda aceitará uma variável de ambiente NEW_RELIC_LICENSE_KEY
. Adicione o sinalizador --disable-license-key-secret
do comando newrelic-lambda integrations install
. Em seguida, defina esta variável de ambiente como na configuração da função do Lambda.
Várias regiões e contas da AWS
A CLI newrelic-lambda
deve ser executada uma vez por região, com o parâmetro --aws-region
. Use o mesmo nome de conta vinculada e a ferramenta detectará que o link da conta já foi criado. O segredo precisa ser criado em cada região.
Da mesma forma, várias contas AWS podem ser vinculadas a uma conta New Relic. Dê a cada conta um nome de conta vinculada diferente. O argumento --aws-profile
para a ferramenta CLI selecionará o perfil nomeado. A ferramenta usa a mesma configuração da AWS CLI.
Função do Lambda não aparece como instrumento
Você instrumentou sua função do Lambda, mas ela não está aparecendo como instrumento na seção Amazon Web Services -> Lambda functions do New Relic.
Você vinculou uma pesquisa de API e uma integração métrica Streams à sua conta New Relic manualmente na interface.
Neste cenário com duas integrações para a mesma conta AWS em uma conta New Relic, uma condição de corrida ocorrerá quando a carga do instrumento for recebida do instrumento função do Lambda no endpoint do coletor de nuvem New Relic. A carga útil será atribuída aleatoriamente a uma das duas integração. Se atribuído à integração não vinculada à sua entidade de função, a carga útil será descartada e a função não aparecerá como instrumento. Somente funções que receberam pelo menos uma carga nos últimos 30 dias do evento AwsLambdaInvocation
aparecerão como instrumento.
FROM AwsLambdaInvocation SELECT count(*) SINCE 30 days ago WHERE entityGuid = 'ENTITY_GUID' LIMIT 1
Para evitar a criação de duas integrações para a mesma conta AWS, recomendamos que você use a CLI newrelic-lambda
, conforme mencionado acima, porque ela detectará uma integração existente e a utilizará.
Caso já tenham sido criadas duas integrações, escolha uma para manter e desvincule a outra clicando em Unlink this account em Infrastructure > AWS no New Relic.
Dica
Existem algumas limitações nas integrações métricas do Streams que devem ser consideradas antes de desvincular uma integração de polling de API. Existem também algumas limitações à consulta métrica Dimensional de Infraestrutura que devem ser consideradas antes de se comprometer totalmente com uma integração métrica de Streams.
Falha ao recuperar a chave de licença AccessDeniedException
Seu código lambda requer a função de execução que tem permissão para ler o AWS Secrets Manager. Se você encontrar um log como o seguinte, adicione a permissão apropriada à política da função de execução. Em nossos exemplos, confira o arquivo template.yaml
para ver uma maneira fácil de conceder essa permissão.
Failed to retrieve license key AccessDeniedException: User: <ARN> is not authorized to perform: secretsmanager:GetSecretValue on resource: <ARN>