Intégration à des fonctions Lambda existantes
Cette section explique comment configurer vos fonctions AWS Lambda existantes pour envoyer des logs et des traces à ClickStack grâce à Rotel Lambda Extension.
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} |
Régions disponibles :
- us-east-2, us-west-2
- eu-central-1, eu-north-1, eu-west-3
- ca-central-1
- ap-southeast-2, ap-northeast-2
- 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 :
arn:aws:lambda:{region}:418653438961:layer:rotel-extension-{arch}:{version} - Cliquez sur Ajouter
Option 2 : AWS CLI
aws lambda update-function-configuration \
--function-name my-function \
--layers arn:aws:lambda:{region}:418653438961:layer:rotel-extension-{arch}:{version}Option 3 : AWS SAM
Resources:
MyFunction:
Type: AWS::Serverless::Function
Properties:
# ... other configuration ...
Layers:
- arn:aws:lambda:{region}:418653438961:layer:rotel-extension-{arch}:{version}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 :
# Required: ClickStack OTLP endpoint
ROTEL_OTLP_EXPORTER_ENDPOINT=https://clickstack.example.com:4317
# Optional: Authentication headers
ROTEL_OTLP_EXPORTER_CUSTOM_HEADERS="Authorization=<YOUR_INGESTION_API_KEY>"
# Optional: Service name (defaults to Lambda function name)
ROTEL_OTEL_RESOURCE_ATTRIBUTES="service.name=my-lambda-api,service.version=1.0.0"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:
ROTEL_OTLP_EXPORTER_ENDPOINT=https://clickstack.example.com:4317
ROTEL_OTLP_EXPORTER_CUSTOM_HEADERS="Authorization=<YOUR_INGESTION_API_KEY>"
ROTEL_OTEL_RESOURCE_ATTRIBUTES="service.name=my-lambda-api,deployment.environment=production"Ensuite, définissez la variable d’environnement pour qu’elle pointe vers ce fichier :
ROTEL_ENV_FILE=/var/task/rotel.envUtilisation 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 :
ROTEL_OTLP_EXPORTER_ENDPOINT=https://clickstack.example.com:4317
ROTEL_OTLP_EXPORTER_CUSTOM_HEADERS="Authorization=${arn:aws:secretsmanager:us-east-1:123456789012:secret:clickstack-api-key-abc123}"Exemple avec AWS Parameter Store :
ROTEL_OTLP_EXPORTER_ENDPOINT=https://clickstack.example.com:4317
ROTEL_OTLP_EXPORTER_CUSTOM_HEADERS="Authorization=${arn:aws:ssm:us-east-1:123456789012:parameter/clickstack-api-key}"Autorisations IAM requises :
Ajoutez ces autorisations à votre rôle d’exécution Lambda :
Pour Secrets Manager :
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"secretsmanager:GetSecretValue",
"secretsmanager:BatchGetSecretValue"
],
"Resource": "arn:aws:secretsmanager:us-east-1:123456789012:secret:clickstack-api-key-*"
}
]
}Pour le Parameter Store :
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ssm:GetParameters"
],
"Resource": "arn:aws:ssm:us-east-1:123456789012:parameter/clickstack-api-key"
}
]
}Tester l’intégration
Appelez votre fonction Lambda pour vérifier que les logs sont bien envoyés à ClickStack :
aws lambda invoke \
--function-name my-function \
--payload '{"test": "data"}' \
response.jsonConsultez les logs de Lambda pour vérifier s’il y a des erreurs :
aws logs tail /aws/lambda/my-function --followVé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)
Par défaut, AWS Lambda envoie tous les logs vers CloudWatch Logs, ce qui peut s’avérer coûteux à grande échelle. Une fois que vous avez vérifié que les logs arrivent bien dans ClickStack, vous pouvez désactiver la journalisation dans CloudWatch pour réduire les 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
# Ceci ne devrait afficher aucun nouveau flux de logs après la modification de la policy
aws logs describe-log-streams \
--log-group-name /aws/lambda/my-function \
--order-by LastEventTime \
--descending \
--max-items 5Ajout de l’auto-instrumentation OpenTelemetry
Rotel Lambda Extension s’intègre parfaitement aux couches d’auto-instrumentation OpenTelemetry pour collecter des traces distribuées et des métriques, en plus des logs.
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} |
Consultez les versions les plus récentes dans le dépôt AWS OpenTelemetry Lambda.
Ajoutez les deux couches à votre fonction
Ajoutez les deux couches : la couche d’extension Rotel et la couche d’instrumentation :
aws lambda update-function-configuration \
--function-name my-function \
--layers \
arn:aws:lambda:{region}:418653438961:layer:rotel-extension-{arch}:{version} \
arn:aws:lambda:{region}:901920570463:layer:aws-otel-nodejs-{arch}-ver-1-30-2:1Configurez l’auto-instrumentation
Définissez la variable d’environnement AWS_LAMBDA_EXEC_WRAPPER pour activer l’auto-instrumentation :
Pour Node.js :
AWS_LAMBDA_EXEC_WRAPPER=/opt/otel-handlerPour Python :
AWS_LAMBDA_EXEC_WRAPPER=/opt/otel-instrumentPour Java :
AWS_LAMBDA_EXEC_WRAPPER=/opt/otel-handlerVé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
Découvrez l’application d’exemple Python présentant Rotel Lambda Extension :
- Python + ClickHouse : application Python avec instrumentation OpenTelemetry manuelle, envoyant directement des traces et des logs à ClickHouse
Rejoignez la communauté Rotel
Si vous avez des questions sur Rotel, rejoignez le serveur Discord de Rotel et partagez vos retours ou vos questions. Consultez la Rotel Lambda Extension pour contribuer à des améliorations.
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