Couche Lambda Datadog
Rapport de recherche Datadog : Bilan sur l'adoption de l'informatique sans serveur Rapport : Bilan sur l'adoption de l'informatique sans serveur

Couche Lambda Datadog

La couche Lambda Datadog est utilisée pour :

  • La création en temps réel des métriques Lambda optimisées portant sur les appels, les erreurs, les démarrages à froid, etc.
  • L’envoi (synchrone ou asynchrone) de métriques custom
  • La propagation automatique des en-têtes de tracing entre les requêtes en amont et les services en aval. Il est ainsi possible de procéder au tracing distribué de l’ensemble de vos fonctions Lambda, hosts, conteneurs et autres infrastructures exécutant l’Agent Datadog.
  • Le packaging de la bibliothèque dd-trace permet aux clients de tracer leurs fonctions Lambda avec les bibliothèques de tracing Datadog, actuellement disponibles pour Node.js, Python et Ruby. D’autres runtimes seront prochainement pris en charge.

Datadog propose plusieurs couches Lambda pour les langages Python, Node.js et Ruby. Go est également pris en charge avec un package à inclure dans votre projet. Nous travaillons actuellement à la prise en charge d’autres langages et runtimes. Si vous souhaitez que Datadog prenne en charge un certain runtime, contactez l’équipe d’assistance.

Configuration

Console AWS

L’ARN de la couche Lambda Datadog comprend une région, le runtime du langage et la version. Pour créer votre propre ARN, utilisez le format suivant :

arn:aws:lambda:<RÉGION_AWS>:464622532012:layer:Datadog-<RUNTIME>:<VERSION>

Par exemple :

arn:aws:lambda:us-east-1:464622532012:layer:Datadog-Python37:11
LangageRuntimeVersions
PythonPython27, Python36, Python37, Python38Dernière version
Node.jsNode8-10, Node10-x, Node12-xDernière version
RubyRubyDernière version

Golang : les liens vers les binaires Go étant statiques, Datadog propose un package qu’il vous suffit d’importer dans votre projet. Aucune couche Lambda n’est requise.

Java : Datadog propose une bibliothèque que vous pouvez importer dans votre projet. Aucune couche Lambda n’est requise.

Remarque : la couche Lambda Datadog et les bibliothèques client intègrent le X-Ray SDK en tant que dépendance. Vous n’avez donc pas besoin de l’installer dans vos projets.

Étapes d’installation :

  1. Accédez à la fonction Lambda à laquelle vous souhaitez ajouter la couche dans votre console AWS.
  2. Cliquez sur Layers sur la page principale de votre fonction.
  3. Faites défiler la page et cliquez sur Add a layer.
  4. Sélectionnez l’option Provide a layer version ARN.
  5. Spécifiez l’ARN de couche Lambda Datadog à partir du tableau ci-dessus.
  6. Accédez à la section Environment Variables de votre fonction pour configurer votre clé d’API Datadog ainsi que toute autre option (voir le tableau ci-dessous).

Serverless Framework

Ce plug-in intègre les couches Lambda Datadog pour Node.js et Python à vos fonctions. Lors du déploiement, il génère de nouvelles fonctions handler qui enveloppent les fonctions existantes et initialisent les couches Lambda.

Le plug-in peut être installé avec l’une des commandes suivantes :

npm install --save-dev serverless-plugin-datadog  # pour les utilisateurs de NPM
yarn add --dev serverless-plugin-datadog          # pour les utilisateurs de Yarn

Ensuite, ajoutez ce qui suit dans votre fichier serverless.yml :

plugins:
    - serverless-plugin-datadog

Configurez la bibliothèque en ajoutant la section suivante à votre fichier serverless.yml. Les valeurs par défaut y sont spécifiées, ainsi que le caractère obligatoire ou facultatif de chaque champ.

custom:
  datadog:
    # Que ce soit pour ajouter les couches Lambda ou que l'utilisateur utilise les siennes. Valeur par défaut : true.
    addLayers: true

    # Le niveau de log. Définir sur DEBUG pour une journalisation étendue. Valeur par défaut : info.
    logLevel: "info"

    # Envoyer des métriques custom via les logs avec l'aide de la fonction Lambda du Forwarder Datadog (conseillé). Valeur par défaut : false.
    flushMetricsToLogs: false

    # Le site Datadog vers lequel envoyer des données, requis uniquement lorsque flushMetricsToLogs est défini sur false. Valeur par défaut : datadoghq.com.
    site: datadoghq.com # datadoghq.eu pour le site européen de Datadog

    # Clé API Datadog, requise uniquement lorsque flushMetricsToLogs est défini sur false.
    apiKey: ""

    # Clé API Datadog chiffrée à l'aide de KMS, requise uniquement lorsque flushMetricsToLogs est défini sur false.
    apiKMSKey: ""

    # Activer le tracing des fonctions Lambda et des intégrations API Gateway. Valeur par défaut : true.
    enableXrayTracing: true

    # Activer le tracing sur la fonction Lambda en utilisant dd-trace, la bibliothèque APM de Datadog. Nécessite de configurer le Forwarder de logs Datadog. Valeur par défaut : true.
    enableDDTracing: true

    # Lorsque ce paramètre est défini, le plug-in essaye d'abonner les groupes de logs CloudWatch Lambda au Forwarder avec l'ARN donné.
    forwarder: arn:aws:lambda:us-east-1:000000000000:function:datadog-forwarder

La configuration suivante flushMetricsToLogs: true est conseillée pour l’envoi de métriques custom via les logs CloudWatch avec l’aide du Forwarder Datadog.

Documentation de Serverless Framework

AWS SAM

Pour activer le tracing via X-Ray par défaut pour vos fonctions Lambda et vos API Gateways, ajoutez les clés Function::Tracing et Api::TracingEnabled à la section Globals de votre fichier template.yaml. Ajoutez également votre clé d’API Datadog ainsi que les variables d’environnement de votre choix (voir le tableau ci-dessous) :

Globals:
    Function:
        Tracing: Active
        Environment:
            Variables:
                DD_API_KEY: VOTRE_CLÉ_API_DATADOG
    Api:
        TracingEnabled: true

Documentation AWS SAM

Développement local

Vous pouvez également inclure le package Lambda Datadog directement dans votre projet, que ce soit depuis les sources ou à l’aide du gestionnaire de paquets standard de votre runtime.

LangageRéférentielTaille approximative
Node.jsGitHub2,6 Mo
PythonGitHub10 Mo
RubyGitHub2,3 Mo
GoGitHub68 Ko
JavaGitHub51 Ko

Remarque : AWS SAM prend en charge le téléchargement de couches Lambda pour le développement local.

Variables d’environnement

Vous pouvez configurer la couche Lambda Datadog en ajoutant des variables d’environnement à vos fonctions Lambda :

Variable d’environnementDescriptionObligatoireValeur par défautValeurs acceptées
DD_API_KEYVotre clé d’API DatadogOuiClé d’API Datadog
DD_KMS_API_KEYÀ utiliser à la place de DD_API_KEY si vous avez recours à KMSNonClé d’API Datadog avec chiffrement KMS
DD_SITEDéfinir si vous utilisez l’instance européenne de DatadogNondatadoghq.comdatadoghq.eu, datadoghq.com
DD_FLUSH_TO_LOGActiver les métriques custom asynchrones sans latence.NonFalseTrue, False
DD_LOG_LEVELActiver les logs détaillés pour la couche Lambda DatadogNonINFOINFO, DEBUG

Pour aller plus loin

Documentation, liens et articles supplémentaires utiles: