Integração do AWS Lambda com OpenTelemetry: logs, métricas e rastreamentos no Grafana
No mundo de observabilidade moderna, não basta apenas rodar funções serverless, é essencial entender o que acontece dentro delas. Com o AWS Lambda e o OpenTelemetry também conseguimos instrumentar aplicações e exportar logs, métricas e traces diretamente para ferramentas como Grafana Loki, Tempo e Mimir.
A boa notícia: a AWS já fornece uma camada pronta, chamada ADOT Lambda Layer , que simplifica a instrumentação.
**A justificativa para atingir o objetivo dessa integração é justamente enviar dados para a stack OSS e economizar com cloudwatch. Segredo nosso.**

Pré-requisitos
Os pré-requisitos para fazer essa integração utilizados foram:
-
Função Lambda rodando em Java 21
-
Acesso ao Console da AWS.
-
Grafana configurado com Loki (logs), Tempo (traces) e Mimir (métricas).
Passo a passo de configuração
- Instrumentar sua Função com ADOT Lambda Layer
- No Console da AWS, abra sua função Lambda.
- Vá em Camadas → Adicionar uma camada → Especificar ARN .
- Insira o ARN do ADOT Layer correspondente à sua região (veja documentação oficial).
- Configure a variável de ambiente:
AWS_LAMBDA_EXEC_WRAPPER=/opt/manipulador-otel
Isso instrui o runtime a usar o wrapper do OpenTelemetry.
Configurar o Coletor OpenTelemetry (Exemplo com Loki para Logs)
A camada ADOT traz embutido um collector. Por padrão, ele exporta para o AWS X-Ray, mas podemos personalizar para Loki/Tempo/Mimir.

Crie um arquivo chamado collector.yaml na raiz do projeto:
receivers:
otlp:
protocols:
grpc:
http:
processors:
batch:
exporters:
loki:
endpoint: "http://<LOKI_ENDPOINT>:3100/loki/api/v1/push"
# headers:
# Authorization: "<TOKEN> básico"
# labels:
# service.name: "lambda-java-app"
service:
pipelines:
logs:
receivers: [ otlp ]
processors: [ batch ]
exporters: [ loki ]
Empacotar e apontar o collector
-
Inclua o collector.yaml no pacote da função (ZIP/JAR).
-
Configure mais uma variável de ambiente:
OPENTELEMETRY_COLLECTOR_CONFIG_FILE =/var/task/collector.yaml
Ative exportação de logs
Adicione:
OTEL_LOGS_EXPORTER =otlp
Validar no Grafana
-
Chame sua função Lambda.
-
Os logs devem aparecer no Grafana Loki.
-
Configure exportadores equivalentes no collector.yaml para enviar também traces ao Tempo e métricas ao Mimir.

Pontos de atenção
Autenticação: se seu Loki exigir credenciais, configure no bloco headers.
Labels: aproveite para enriquecer logs com service.name, job, etc.
Deu certo? Me conta!