TL;DREsta guía le muestra cómo supervisar funciones de AWS Lambda con ClickStack mediante Rotel Lambda Extension para recopilar y reenviar directamente a ClickHouse los logs de las funciones, los logs de la extensión y los datos de OpenTelemetry. Aprenderá a:
- Implementar la capa de Rotel Lambda Extension en sus funciones Lambda
- Configurar la extensión para exportar logs y traces a ClickStack
- Deshabilitar CloudWatch Logs de forma opcional para reducir costos
Integración con funciones de Lambda existentes
Requisitos previos
- Instancia de ClickStack en ejecución
- Funciones de AWS Lambda que se van a supervisar
- AWS CLI configurado con los permisos adecuados
- Rol de ejecución de Lambda con permisos para añadir capas
Elige la capa adecuada de Rotel Lambda Extension
Elige la capa de Lambda que coincida con la arquitectura del entorno de ejecución de tu función Lambda. El campo{version}
depende de la región de AWS en la que la estés desplegando. Consulta la página de releases
para ver los números de versión más recientes correspondientes a tu región.| Arquitectura | 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
Añade la capa Rotel a tu función Lambda
En estos ejemplos, sustituye{arch}, {region} y {version} por los valores adecuados indicados arriba.Opción 1: Consola de AWS
- Abre la consola de AWS Lambda
- Ve a tu función Lambda
- Desplázate hasta la sección Layers y haz clic en Add a layer
- Selecciona Specify an ARN
- Introduce el ARN de la capa Rotel:
- Haz clic en Add
Opción 2: AWS CLI
Opción 3: AWS SAM
Configura la extensión para exportar a ClickStack
Rotel Lambda Extension se configura mediante variables de entorno. Debes configurar el endpoint del exportador OTLP para que apunte a tu instancia de ClickStack. Los ejemplos asumen que tu función de AWS Lambda puede acceder a la instancia de ClickStack.Configuración básica (variables de entorno)
Agrega estas variables de entorno a tu función de Lambda:Configuración avanzada (con el archivo .env)
Para configuraciones más complejas, crea un archivorotel.env en el paquete de tu función Lambda:rotel.env:Uso de AWS Secrets Manager o de Parameter Store
Para implementaciones de producción, almacena valores confidenciales, como claves de API, en AWS Secrets Manager o Parameter Store:Ejemplo de AWS Secrets Manager:Las llamadas a la API de AWS para recuperar secretos añaden entre 100 y 150 ms de latencia al arranque en frío. Los secretos se recuperan en lotes (hasta 10) y solo durante la inicialización, por lo que las invocaciones posteriores no se ven afectadas.
Probar la integración
Invoca tu función Lambda para comprobar que los logs se están enviando a ClickStack:Verifica los logs en HyperDX
Una vez configurado, inicia sesión en HyperDX (la UI de ClickStack) y verifica que los logs se estén enviando:Busca estos atributos clave en los logs:service.name: El nombre de tu función Lambdafaas.name: Nombre de la función AWS Lambdafaas.invocation_id: ID de invocación únicocloud.provider: “aws”cloud.platform: “aws_lambda”
Deshabilitar CloudWatch Logs (optimización de costos)
Quitar los permisos de CloudWatch del rol de ejecución
- Abre la consola de AWS y ve a AWS Lambda
- Ve a tu función Lambda
- Selecciona Configuration → Permissions
- Haz clic en el nombre del rol de ejecución para abrir la consola de IAM
- Edita el rol y elimina cualquier acción
logs:*:- Si usas una política personalizada, edítala para quitar
logs:CreateLogGroup,logs:CreateLogStreamylogs:PutLogEvents - Si usas la política administrada por AWS
AWSLambdaBasicExecutionRole, quítala del rol
- Si usas una política personalizada, edítala para quitar
- Guarda el rol
Verifica que el logging de CloudWatch esté deshabilitado
Invoca tu función de nuevo y verifica que:- No se creen nuevos streams de logs en CloudWatch
- Los logs sigan apareciendo en ClickStack/HyperDX
Agregar autoinstrumentación de OpenTelemetry
Elige la capa de instrumentación para tu lenguaje
AWS ofrece capas de autoinstrumentación de OpenTelemetry para varios lenguajes:| Lenguaje | Patrón de ARN de la capa |
|---|---|
| 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} |
Agrega ambas capas a tu función
Agrega ambas capas: la capa de extensión de Rotel y la capa de instrumentación:Configura la autoinstrumentación
Define la variable de entornoAWS_LAMBDA_EXEC_WRAPPER para habilitar la autoinstrumentación:Para Node.js:Verifica las trazas en HyperDX
Después de invocar tu función:- Ve a la vista Traces de HyperDX
- Deberías ver trazas con spans de tu función Lambda
- Las trazas aparecerán correlacionadas con los logs mediante los atributos
trace_idyspan_id
Aplicaciones de ejemplo
- Python + ClickHouse: Aplicación de Python con instrumentación manual de OpenTelemetry, que envía trazas y logs directamente a ClickHouse
Únete a la comunidad de Rotel
Recursos adicionales
- Rotel Lambda Extension: Código fuente y documentación detallada
- Rotel Core: El plano de datos ligero de OTel que sirve de base para la extensión