Elven Observability: Instrumentação de Lambda
Pré-requisitos
- OTel Collector instalado em uma EC2
- Organization cadastrada na Elven Observability
- Lambda Function
- Permitir tráfego da Lambda para a EC2 do Collector, caso ela não esteja pública: documentação
- Sem Serveless Framework
- Com Serveless Framework
Adicione as seguintes variáveis de ambiente clicando em Add Environment Variables
:
AWS_LAMBDA_EXEC_WRAPPER="/opt/otel-handler"
OTEL_TRACES_SAMPLER="always_on"
OTEL_TRACES_EXPORTER="otlp"
OTEL_METRICS_EXPORTER="otlp"
OTEL_LOG_LEVEL="DEBUG"
OTEL_PROPAGATORS="tracecontext,baggage, xray"
OTEL_LAMBDA_TRACE_MODE="capture"
OTEL_EXPORTER_OTLP_ENDPOINT=""
OTEL_SERVICE_NAME=""
OTEL_RESOURCE_ATTRIBUTES="service.name=,environment="
Somente as últimas três variáveis devem ser alteradas:
EC2_URL_HERE
: o IP da EC2 ou o DNS caso tenha sido configuradoLAMBDA-NAME
: o nome do serviço que aparecerá nos traces e métricasENVIRONMENT
: dev, hml ou prd, o ambiente que está sendo instrumentado
Então, escolha a opção Specify an ARN
e cole esse ARN:
arn:aws:lambda:us-east-1:184161586896:layer:opentelemetry-nodejs-0_9_0:4
Por fim, clique em Verify
e então em Add
Feito no arquivo serverless.yaml na qual as lambdas são configuradas, como no exemplo abaixo:
Importante: a configuração deve ser feita para cada Function!
As configurações são as mesmas realizadas em Configurando as variáveis de ambiente e em Configurando a Layer de instrumentação.
org:
app:
service:
provider:
name: aws
runtime: nodejs20.x
functions:
:
handler:
layers:
- arn:aws:lambda:us-east-1:184161586896:layer:opentelemetry-nodejs-0_9_0:4
environment:
AWS_LAMBDA_EXEC_WRAPPER: "/opt/otel-handler"
OTEL_TRACES_SAMPLER: "always_on"
OTEL_TRACES_EXPORTER: "otlp"
OTEL_METRICS_EXPORTER: "otlp"
OTEL_LOG_LEVEL: "DEBUG"
OTEL_LAMBDA_TRACE_MODE: "capture"
OTEL_PROPAGATORS: "tracecontext,baggage, xray"
OTEL_EXPORTER_OTLP_ENDPOINT: ""
OTEL_SERVICE_NAME: ""
OTEL_RESOURCE_ATTRIBUTES: "service.name=,environment="
:
handler:
layers:
- arn:aws:lambda:us-east-1:184161586896:layer:opentelemetry-nodejs-0_9_0:4
environment:
AWS_LAMBDA_EXEC_WRAPPER: "/opt/otel-handler"
OTEL_TRACES_SAMPLER: "always_on"
OTEL_TRACES_EXPORTER: "otlp"
OTEL_METRICS_EXPORTER: "otlp"
OTEL_LOG_LEVEL: "DEBUG"
OTEL_LAMBDA_TRACE_MODE: "capture"
OTEL_PROPAGATORS: "tracecontext,baggage, xray"
OTEL_EXPORTER_OTLP_ENDPOINT: ""
OTEL_SERVICE_NAME: ""
OTEL_RESOURCE_ATTRIBUTES: "service.name=,environment="
Feito isso, é só realizar o deploy.