Extension Lambda Datadog

Présentation

Les extensions AWS Lambda sont des processus complémentaires qui permettent d’enrichir vos fonctions Lambda. Elles s’exécutent dans l’environnement d’exécution Lambda, avec le code de votre fonction Lambda. L’extension Datadog est une version plus légère de l’Agent Datadog, conçue pour s’exécuter en même temps que votre code avec un impact minimal sur les performances.

Instrumenter des applications sans serveur AWS

L’extension Lambda Datadog est utilisée pour :

L’extension Datadog envoie des métriques custom, des métriques optimisées, des traces et des logs de façon asynchrone. L’envoi de logs Lambda via l’extension est pris en charge dans tous les runtimes Lambda. L’envoi de métriques custom, de métriques optimisées et de traces est pris en charge dans les runtimes Lambda Node.js, Python et Go.

Installation

Pour installer l’extension Lambda Datadog, instrumenter vos applications sans serveur AWS et passer en revue les runtimes pris en charge, consultez les instructions d’installation pour les environnements sans serveur.

Collecte de logs

Pour désactiver l’envoi de vos logs AWS Lambda à Datadog via l’extension, définissez la variable d’environnement DD_SERVERLESS_LOGS_ENABLED sur false dans votre fonction Lambda.

Pour exclure les logs START et END, définissez la variable d’environnement DD_LOGS_CONFIG_PROCESSING_RULES sur [{"type": "exclude_at_match", "name": "exclude_start_and_end_logs", "pattern": "(START|END)\\s"}]. Vous pouvez également ajouter un fichier datadog.yaml dans le répertoire de départ de votre projet avec le contenu suivant :

logs_config:
  processing_rules:
    - type: exclude_at_match
      name: exclude_start_and_end_logs
      pattern: (START|END)\s

Pour nettoyer ou filtrer d’autres logs avant de les envoyer à Datadog, consultez Collecte de logs avancée.

Collecte de traces

Pour désactiver l’envoi de vos traces AWS Lambda à Datadog via l’extension, définissez la variable d’environnement DD_TRACE_ENABLED sur false dans votre fonction Lambda.

Pour filtrer des traces avant de les envoyer à Datadog, consultez Ignorer les ressources non désirées dans l’APM.

Si vous avez besoin de nettoyer les attributs de vos traces pour des raisons de sécurité, consultez Configurer l’Agent Datadog ou le traceur pour assurer la sécurité des données.

Tags

Lorsque vous utilisez l’extension, Datadog vous conseille d’appliquer des tags en ajoutant les variables d’environnement suivantes à vos fonctions Lambda :

  • DD_ENV : permet de définir le tag env dans Datadog. Utilisez ce tag pour faire la différence entre vos environnements de staging, de développement et de production.
  • DD_SERVICE : permet de définir le tag service dans Datadog. Utilisez ce tag pour regrouper les fonctions Lambda connexes au sein d’un service.
  • DD_VERSION : permet de définir le tag version dans Datadog. Utilisez ce tag pour activer le Suivi des déploiements.
  • DD_TAGS : permet de définir des tags custom dans Datadog. Doit correspondre à une liste de paires <key>:<value> séparées par des virgules, par exemple : layer:api,team:intake.

Si vous avez activé l’intégration Datadog/AWS, les tags de ressource AWS appliqués à votre fonction AWS Lambda seront également appliqués dans Datadog automatiquement.

VPC

L’extension Lambda Datadog doit avoir accès à Internet pour envoyer des données à Datadog. Si vos fonctions Lambda sont déployées dans un sous-réseau privé de VPC sans accès à Internet, consultez les options ci-dessous.

Si vous envoyez des données à un site Datadog hébergé sur AWS, tel que US1, vous pouvez envoyer ces données via AWS PrivateLink. Consultez la section Sites Datadog ou ouvrez un ticket sur help.datadoghq.com si vous ne connaissez pas votre site Datadog.

Avec un proxy

Si vous envoyez des données à un site Datadog qui n’est PAS hébergé sur AWS, tel que EU1, vous devez alors passer par un proxy.

Performances

L’extension Lambda Datadog alourdit légèrement votre fonction Lambda lors des démarrages à froid (l’initialisation prend donc plus de temps). Datadog optimise continuellement les performances de l’extension Lambda et vous conseille de toujours utiliser la dernière version.

Vous remarquerez peut-être que la durée d’exécution annoncée de votre fonction Lambda est plus longue qu’auparavant. Cela s’explique par le fait que l’extension Lambda Datadog doit renvoyer des données via l’API Datadog. Bien que le temps passé à transmettre ces données soit pris en compte dans la durée de la fonction, cette opération a lieu après le renvoi de la réponse de votre fonction au client par AWS. En d’autres termes, votre fonction Lambda ne subit en réalité aucun ralentissement. Consultez cet article sur le blog d’AWS pour en savoir plus.

Par défaut, l’extension renvoie les données à Datadog à la fin de chaque invocation. Cela permet d’éviter les retards de transmission des données pour les applications à faible trafic qui effectuent des invocations de façon sporadique, les tâches cron et les tests manuels. Dès que l’extension détecte un pattern d’invocation régulier et fréquent (plus d’une fois par minute), elle regroupe les données de plusieurs invocations et transmet les données de façon périodique au début de l’invocation. Cela signifie que plus votre fonction est occupée, plus la durée d’exécution moyenne par invocation sera faible.

Si votre fonction Lambda est déployée dans une région éloignée du site Datadog, par exemple si elle est déployée dans eu-west-1 et qu’elle transmet ses données au site Datadog US1, il est possible que la durée d’exécution soit plus élevée en raison de la latence du réseau. Vous pouvez définir la variable d’environnement DD_SERVERLESS_FLUSH_STRATEGY avec la valeur periodically,30000 sur vos fonctions Lambda afin de transmettre les données toutes les 30 secondes au lieu de 10 secondes par défaut. Ce changement se traduira généralement par une durée d’exécution moyenne nettement inférieure par invocation.

Pour aller plus loin