TL;DREste guia mostra como monitorar funções do AWS Lambda com o ClickStack usando a Rotel Lambda Extension para coletar e encaminhar logs das funções, logs da extensão e dados do OpenTelemetry diretamente para o ClickHouse. Você aprenderá a:
- Implantar a camada da Rotel Lambda Extension nas suas funções Lambda
- Configurar a extensão para exportar logs e traces para o ClickStack
- Opcionalmente, desativar o CloudWatch Logs para reduzir custos
Integração com funções Lambda existentes
Pré-requisitos
- Instância do ClickStack em execução
- Funções do AWS Lambda para monitorar
- AWS CLI configurada com as permissões adequadas
- Perfil de execução do Lambda com permissões para adicionar camadas
Escolha a camada apropriada do Rotel Lambda Extension
Escolha a camada do Lambda que corresponda à arquitetura de runtime da sua função Lambda. O campo{version}
depende da região da AWS em que você está implantando. Consulte a página de lançamentos
para encontrar os números de versão mais recentes correspondentes à sua região.| Arquitetura | ARN |
|---|---|
| x86-64/amd64 | arn:aws:lambda:{region}:418653438961:layer:rotel-extension-amd64:{version} |
| arm64 | arn:aws:lambda:{region}:418653438961:layer:rotel-extension-arm64:{version} |
- us-east-, us-west-
- eu-central-1, eu-north-1, eu-west-
- ca-central-1
- ap-southeast-, ap-northeast-
- ap-south-1
- sa-east-1
Adicione a layer do Rotel à sua função Lambda
Nestes exemplos, substitua{arch}, {region} e {version} pelos valores apropriados acima.Opção 1: AWS Console
- Abra o console do AWS Lambda
- Acesse sua função Lambda
- Role até a seção Layers e clique em Add a layer
- Selecione Specify an ARN
- Insira o ARN da layer do Rotel:
- Clique em Add
Opção 2: AWS CLI
Opção 3: AWS SAM
Configure a extensão para exportar para o ClickStack
A Rotel Lambda Extension é configurada por meio de variáveis de ambiente. Você precisa configurar o endpoint do exporter OTLP para apontar para sua instância do ClickStack. Os exemplos presumem que sua função do AWS Lambda consegue acessar a instância do ClickStack.Configuração básica (variáveis de ambiente)
Adicione estas variáveis de ambiente à sua função do Lambda:Configuração avançada (usando um arquivo .env)
Para configurações mais complexas, crie um arquivorotel.env no pacote da sua função Lambda:rotel.env:Como usar o AWS Secrets Manager ou o Parameter Store
Para implantações em produção, armazene valores sensíveis, como chaves de API, no AWS Secrets Manager ou no Parameter Store:Exemplo de AWS Secrets Manager:As chamadas à API da AWS para recuperar segredos acrescentam 100 a 150 ms à latência de cold start. Os segredos são recuperados em lotes (de até 10) e apenas na inicialização, portanto as invocações subsequentes não são afetadas.
Teste a integração
Invoque sua função Lambda para verificar se os logs estão sendo enviados para o ClickStack:Verifique os logs no HyperDX
Depois de concluir a configuração, faça login no HyperDX (a UI do ClickStack) e verifique se os logs estão chegando:Procure estes atributos-chave nos logs:service.name: Nome da sua função Lambdafaas.name: Nome da função AWS Lambdafaas.invocation_id: ID exclusivo da invocaçãocloud.provider: “aws”cloud.platform: “aws_lambda”
Desabilitando o CloudWatch Logs (otimização de custos)
Remova as permissões do CloudWatch do perfil de execução
- Abra o AWS Console e navegue até AWS Lambda
- Acesse sua função Lambda
- Selecione Configuration → Permissions
- Clique no nome do perfil de execução para abrir o console do IAM
- Edite a role e remova quaisquer actions
logs:*:- Se estiver usando uma policy personalizada, edite-a para remover
logs:CreateLogGroup,logs:CreateLogStreamelogs:PutLogEvents - Se estiver usando a policy gerenciada pela AWS
AWSLambdaBasicExecutionRole, remova-a da role
- Se estiver usando uma policy personalizada, edite-a para remover
- Salve a role
Verifique se o logging do CloudWatch está desabilitado
Invoque sua função novamente e verifique se:- Nenhum novo log stream do CloudWatch é criado
- Os logs continuam aparecendo no ClickStack/HyperDX
Adicionando a instrumentação automática do OpenTelemetry
Escolha a camada de instrumentação da sua linguagem
A AWS fornece camadas de instrumentação automática do OpenTelemetry para várias linguagens:| Linguagem | Padrão de ARN da camada |
|---|---|
| Node.js | arn:aws:lambda:{region}:901920570463:layer:aws-otel-nodejs-{arch}-ver-{version} |
| Python | arn:aws:lambda:{region}:901920570463:layer:aws-otel-python-{arch}-ver-{version} |
| Java | arn:aws:lambda:{region}:901920570463:layer:aws-otel-java-agent-{arch}-ver-{version} |
Adicione as duas camadas à sua função
Adicione as duas camadas: a camada de extensão do Rotel e a camada de instrumentação:Configure a instrumentação automática
Defina a variável de ambienteAWS_LAMBDA_EXEC_WRAPPER para ativar a instrumentação automática:Para Node.js:Verifique os traces no HyperDX
Depois de invocar sua função:- Acesse a visualização Traces no HyperDX
- Você deverá ver traces com spans da sua função Lambda
- Os traces serão correlacionados com os logs por meio dos atributos
trace_idespan_id
Aplicativos de exemplo
- Python + ClickHouse: Aplicativo Python com instrumentação manual com OpenTelemetry, enviando traces e logs diretamente para o ClickHouse
Participe da comunidade Rotel
Recursos adicionais
- Rotel Lambda Extension: Código-fonte e documentação detalhada
- Rotel Core: O plano de dados leve do OTel que dá suporte à extensão