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
1
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.Regiones disponibles:
- 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
2
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
3
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.
4
Probar la integración
Invoca tu función Lambda para comprobar que los logs se están enviando a ClickStack:5
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)
1
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
2
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
1
Elige la capa de instrumentación para tu lenguaje
AWS ofrece capas de autoinstrumentación de OpenTelemetry para varios lenguajes:Consulta las versiones más recientes en el repositorio de AWS OpenTelemetry Lambda.
2
Agrega ambas capas a tu función
Agrega ambas capas: la capa de extensión de Rotel y la capa de instrumentación:3
Configura la autoinstrumentación
Define la variable de entornoAWS_LAMBDA_EXEC_WRAPPER para habilitar la autoinstrumentación:Para Node.js:4
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