TL;DRCe guide vous montre comment surveiller vos fonctions AWS Lambda avec ClickStack grâce à la Rotel Lambda Extension, afin de collecter et d’envoyer directement vers ClickHouse les logs des fonctions, les logs de l’extension et les données OpenTelemetry. Vous apprendrez à :
- Déployer la couche Rotel Lambda Extension sur vos fonctions Lambda
- Configurer l’extension pour exporter les logs et les traces vers ClickStack
- Désactiver CloudWatch Logs de manière facultative pour réduire les coûts
Intégration à des fonctions Lambda existantes
Prérequis
- Instance ClickStack en fonctionnement
- Fonctions AWS Lambda à surveiller
- AWS CLI configuré avec les autorisations appropriées
- Rôle d’exécution Lambda disposant des autorisations nécessaires pour ajouter des couches
Choisissez la couche Rotel Lambda Extension appropriée
Choisissez la couche Lambda correspondant à l’architecture de l’environnement d’exécution de votre fonction Lambda. Le champ{version}
dépend de la région AWS dans laquelle vous déployez. Consultez la page des versions
pour connaître les derniers numéros de version correspondant à votre région.| Architecture | 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
Ajoutez la couche Rotel à votre fonction Lambda
Dans ces exemples, remplacez{arch}, {region} et {version} par les valeurs appropriées ci-dessus.Option 1 : Console AWS
- Ouvrez la console AWS Lambda
- Accédez à votre fonction Lambda
- Faites défiler la page jusqu’à la section Couches, puis cliquez sur Ajouter une couche
- Sélectionnez Spécifier un ARN
- Saisissez l’ARN de la couche Rotel :
- Cliquez sur Ajouter
Option 2 : AWS CLI
Option 3 : AWS SAM
Configurer l’extension pour exporter vers ClickStack
La Rotel Lambda Extension se configure à l’aide de variables d’environnement. Vous devez configurer le point de terminaison de l’exportateur OTLP pour qu’il pointe vers votre instance ClickStack. Les exemples supposent que votre fonction AWS Lambda peut accéder à l’instance ClickStack.Configuration de base (variables d’environnement)
Ajoutez ces variables d’environnement à votre fonction Lambda :Configuration avancée (à l’aide d’un fichier .env)
Pour des configurations plus complexes, créez un fichier rotel.env dans le package de votre fonction Lambda :rotel.env:Utilisation d’AWS Secrets Manager ou de Parameter Store
Pour les déploiements en production, stockez les valeurs sensibles, comme les clés d’API, dans AWS Secrets Manager ou Parameter Store :Exemple AWS Secrets Manager :Les appels à l’API AWS pour récupérer des secrets ajoutent 100 à 150 ms de latence au démarrage à froid. Les secrets sont récupérés par lots (jusqu’à 10) et uniquement lors de l’initialisation, de sorte que les invocations suivantes ne sont pas affectées.
Tester l’intégration
Appelez votre fonction Lambda pour vérifier que les logs sont bien envoyés à ClickStack :Vérifier les logs dans HyperDX
Une fois la configuration terminée, connectez-vous à HyperDX (l’UI de ClickStack) et vérifiez que les logs sont bien transmis :Recherchez ces attributs clés dans les logs :service.name: Le nom de votre fonction Lambdafaas.name: Le nom de la fonction AWS Lambdafaas.invocation_id: ID d’invocation uniquecloud.provider: “aws”cloud.platform: “aws_lambda”
Désactiver CloudWatch Logs (optimisation des coûts)
Supprimer les autorisations CloudWatch du rôle d’exécution
- Ouvrez la Console AWS et accédez à AWS Lambda
- Accédez à votre fonction Lambda
- Sélectionnez Configuration → Permissions
- Cliquez sur le nom du rôle d’exécution pour ouvrir la console IAM
- Modifiez le rôle et supprimez toutes les actions
logs:*:- Si vous utilisez une policy personnalisée, modifiez-la pour supprimer
logs:CreateLogGroup,logs:CreateLogStreametlogs:PutLogEvents - Si vous utilisez la policy gérée par AWS
AWSLambdaBasicExecutionRole, supprimez-la du rôle
- Si vous utilisez une policy personnalisée, modifiez-la pour supprimer
- Enregistrez le rôle
Vérifier que la journalisation CloudWatch est désactivée
Appelez à nouveau votre fonction et vérifiez que :- Aucun nouveau flux de logs CloudWatch n’est créé
- Les logs continuent d’apparaître dans ClickStack/HyperDX
Ajout de l’auto-instrumentation OpenTelemetry
Choisissez la couche d’instrumentation adaptée à votre langage
AWS fournit des couches d’auto-instrumentation OpenTelemetry pour plusieurs langages :| Langage | Modèle d’ARN de couche |
|---|---|
| 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} |
Ajoutez les deux couches à votre fonction
Ajoutez les deux couches : la couche d’extension Rotel et la couche d’instrumentation :Configurez l’auto-instrumentation
Définissez la variable d’environnementAWS_LAMBDA_EXEC_WRAPPER pour activer l’auto-instrumentation :Pour Node.js :Vérifiez les traces dans HyperDX
Après avoir invoqué votre fonction :- Accédez à la vue Traces dans HyperDX
- Vous devriez voir des traces contenant des spans issus de votre fonction Lambda
- Les traces seront corrélées aux logs via les attributs
trace_idetspan_id
Exemples d’applications
- Python + ClickHouse : application Python avec instrumentation OpenTelemetry manuelle, envoyant directement des traces et des logs à ClickHouse
Rejoignez la communauté Rotel
Ressources supplémentaires
- Rotel Lambda Extension : Code source et documentation détaillée
- Rotel Core : Le plan de données OTel léger sur lequel repose l’extension