Le plug-in Serverless Datadog ajoute automatiquement la bibliothèque Lambda Datadog à vos fonctions à l’aide des couches Lambda, et configure vos fonctions de sorte à ce qu’elles envoient les métriques, les traces et les logs à Datadog via l’extension Lambda Datadog.
Pour installer et configurer le plug-in Serverless Datadog, suivez les étapes suivantes :
- Installez le plug-in Serverless Datadog :
yarn add --dev serverless-plugin-datadog
- Ajoutez ce qui suit dans votre fichier
serverless.yml
:plugins:
- serverless-plugin-datadog
- Ajoutez également la section suivante dans votre fichier
serverless.yml
:custom:
datadog:
addExtension: true
apiKey: # Your Datadog API Key goes here.
Recherchez votre clé d’API Datadog sur la page de gestion des API. Pour prendre connaissance des paramètres supplémentaires, consultez la documentation du plug-in.
La macro CloudFormation Datadog transforme automatiquement votre modèle d’application SAM dans le but d’ajouter la bibliothèque Lambda Datadog à vos fonctions à l’aide des couches. De plus, elle configure vos fonctions de sorte à ce qu’elles envoient des métriques, des traces et des logs à Datadog via l’extension Lambda Datadog.
Installation
Exécutez la commande suivante avec vos identifiants AWS pour déployer une pile CloudFormation qui installe la ressource AWS de la macro. Vous ne devez installer la macro qu’une seule fois par région de votre compte. Remplacez create-stack
par update-stack
pour mettre à jour la macro vers la dernière version.
aws cloudformation create-stack \
--stack-name datadog-serverless-macro \
--template-url https://datadog-cloudformation-template.s3.amazonaws.com/aws/serverless-macro/latest.yml \
--capabilities CAPABILITY_AUTO_EXPAND CAPABILITY_IAM
La macro est désormais déployée et utilisable.
Instrumentation
Pour instrumenter une fonction, ajoutez ce qui suit dans la section Transform
de votre fichier template.yml
, après la transformation AWS::Serverless
pour SAM.
Transform:
- AWS::Serverless-2016-10-31
- Name: DatadogServerless
Parameters:
stackName: !Ref "AWS::StackName"
nodeLayerVersion: "<VERSION_COUCHE>"
extensionLayerVersion: "<VERSION_EXTENSION>"
service: "<SERVICE>" # Facultatif
env: "<ENV>" # Facultatif
Remplacez <SERVICE>
et <ENV>
par les valeurs appropriées, <VERSION_COUCHE>
par la version de votre choix de la bibliothèque Lambda Datadog, et <VERSION_EXTENSION>
par la version de votre choix de l’extension Lambda Datadog.
Pour obtenir plus de détails ainsi que des paramètres supplémentaires, consultez la documentation relative à la macro.
La bibliothèque CDK Constructs Datadog ajoute automatiquement la bibliothèque Lambda Datadog à vos fonctions à l’aide des couches Lambda, et configure vos fonctions de sorte à ce qu’elles envoient les métriques, les traces et les logs à Datadog via l’extension Lambda Datadog.
Installer la bibliothèque CDK Constructs Datadog
Exécutez la commande suivante dans votre projet CDK :
#PyPI
pip install datadog-cdk-constructs
Instrumenter la fonction
Importez le module datadog-cdk-construct
dans votre application AWS CDK et ajoutez les configurations suivantes :
from datadog_cdk_constructs import Datadog
datadog = Datadog(self, "Datadog",
python_layer_version=<VERSION_COUCHE>,
extension_layer_version=<VERSION_COUCHE_EXTENSION>,
dd_api_key=<CLÉ_API_DATADOG>
)
datadog.add_lambda_functions([<FONCTIONS_LAMBDA>])
Pour remplir les paramètres fictifs, procédez comme suit :
- Remplacez
<CLÉ_API_DATADOG>
par votre clé d’API Datadog, disponible sur la page de gestion des API. - Remplacez
<VERSION_COUCHE>
par la version de votre choix de la couche Lambda Datadog (consultez les dernières versions). - Remplacez
<VERSION_EXTENSION>
par la version de votre choix de l’extension Lambda Datadog (consultez les dernières versions).
Pour en savoir plus et obtenir des paramètres supplémentaires, consultez la page NPM relative au CDK Datadog (en anglais).
Mettre à jour les paramètres
- Ajoutez les paramètres suivants à votre fichier
zappa_settings.json
:
```json
{
"dev": {
"layers": ["arn:aws:lambda:<AWS_REGION>:464622532012:layer:Datadog-<RUNTIME>:<LIBRARY_VERSION>", "arn:aws:lambda:<AWS_REGION>:464622532012:layer:Datadog-Extension:<EXTENSION_VERSION>"],
"lambda_handler": "datadog_lambda.handler.handler",
"aws_environment_variables": {
"DD_LAMBDA_HANDLER": "handler.lambda_handler",
"DD_TRACE_ENABLED": "true",
"DD_FLUSH_TO_LOG": "true",
"DD_API_KEY": "<DATADOG_API_KEY>",
},
}
}
```
```json
{
"dev": {
"layers": ["arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-<RUNTIME>:<LIBRARY_VERSION>", "arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-Extension:<EXTENSION_VERSION>"],
"lambda_handler": "datadog_lambda.handler.handler",
"aws_environment_variables": {
"DD_LAMBDA_HANDLER": "handler.lambda_handler",
"DD_TRACE_ENABLED": "true",
"DD_FLUSH_TO_LOG": "true",
"DD_API_KEY": "<DATADOG_API_KEY>",
},
}
}
```
2. Remplacez les paramètres fictifs suivants par les valeurs appropriées :
Par exemple :
```
arn:aws:lambda:us-east-1:464622532012:layer:Datadog-Python38:36
arn:aws:lambda:us-east-1:464622532012:layer:Datadog-Extension:7
```
```
arn:aws-us-gov:lambda:us-gov-east-1:002406178527:layer:Datadog-Python38:36
arn:aws-us-gov:lambda:us-gov-east-1:002406178527:layer:Datadog-Extension:7
```
Mettre à jour le projet
- Ajoutez l’extension Lambda Datadog et les variables d’environnement suivantes dans votre fichier
config.json
:
```json
{
"version": "2.0",
"app_name": "hello-chalice",
"stages": {
"dev": {
"api_gateway_stage": "api",
"environment_variables": {
"DD_TRACE_ENABLED": "true",
"DD_FLUSH_TO_LOG": "true",
"DD_API_KEY": "<DATADOG_API_KEY>",
},
"layers": ["arn:aws:lambda:<AWS_REGION>:464622532012:layer:Datadog-Extension:<EXTENSION_VERSION>"],
}
}
}
```
```json
{
"version": "2.0",
"app_name": "hello-chalice",
"stages": {
"dev": {
"api_gateway_stage": "api",
"environment_variables": {
"DD_TRACE_ENABLED": "true",
"DD_FLUSH_TO_LOG": "true",
"DD_API_KEY": "<DATADOG_API_KEY>",
},
"layers": ["arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-Extension:<VERSION_NUMBER>"],
}
}
}
```
2. Remplacez les paramètres fictifs suivants par les valeurs appropriées :
- Ajoutez
datadog_lambda
à votre fichier requirements.txt
. - Enregistrez
datadog_lambda_wrapper
en tant que middleware dans app.py
:from chalice import Chalice, ConvertToMiddleware
from datadog_lambda.wrapper import datadog_lambda_wrapper
app = Chalice(app_name='hello-chalice')
app.register_middleware(ConvertToMiddleware(datadog_lambda_wrapper))
@app.route('/')
def index():
return {'hello': 'world'}
Ce service est en bêta publique. Si vous souhaitez nous faire part de vos remarques, contactez l'
assistance Datadog.
Utilisez l’interface de ligne de commande Datadog pour configurer l’instrumentation sur vos fonctions Lambda dans vos pipelines CI/CD. La commande de l’interface de ligne de commande ajoute automatiquement la bibliothèque Lambda Datadog à vos fonctions à l’aide des couches Lambda. Elle configure vos fonctions de façon à envoyer des métriques, traces et logs à Datadog.
Installation
Installez l’interface de ligne de commande Datadog avec NPM ou Yarn :
# NPM
npm install -g @datadog/datadog-ci
# Yarn
yarn global add @datadog/datadog-ci
Instrumentation
Pour instrumenter la fonction, exécutez la commande suivante avec vos identifiants AWS. Remplacez <nomfonction>
et <autre_nomfonction>
par les noms de vos fonctions Lambda, <région_aws>
par le nom de la région AWS, <version_couche>
par la version de votre choix de la bibliothèque Lambda Datadog et <version_extension>
par la version de votre choix de l’extension Lambda Datadog.
datadog-ci lambda instrument -f <nomfonction> -f <autre_nomfonction> -r <région_aws> -v <version_couche> -e <version_extension>
Par exemple :
datadog-ci lambda instrument -f my-function -f another-function -r us-east-1 -v 19 -e 8
datadog-ci lambda instrument -f my-function -f another-function -r us-east-1 -v 19 -e 8
Pour obtenir plus de détails ainsi que des paramètres supplémentaires, consultez la documentation relative à l’interface de ligne de commande.
Installation
Si vous déployez votre fonction Lambda en tant qu’image de conteneur, vous ne pouvez pas utiliser la bibliothèque Lambda Datadog en tant que couche Lambda. À la place, vous devez installer la bibliothèque Lambda Datadog en tant que dépendance de votre fonction directement dans l’image.
pip install datadog-lambda
Veuillez noter que la version mineure du package datadog-lambda
correspond toujours à la version de la couche. Par exemple, datadog-lambda v0.5.0
correspond au contenu de la version 5 de la couche.
Installer l’extension Lambda Datadog
Ajoutez l’extension Lambda Datadog à votre image de conteneur en ajoutant ce qui suit à votre Dockerfile :
COPY --from=public.ecr.aws/datadog/lambda-extension:<TAG> /opt/extensions/ /opt/extensions
Remplacez <TAG>
par un numéro de version spécifique (par exemple, 7
) ou par latest
. Accédez au référentiel Amazon ECR pour consulter la liste complète des tags disponibles.
- Définissez la valeur
CMD
de votre image sur datadog_lambda.handler.handler
. Vous pouvez effectuer cette opération dans AWS ou directement dans votre Dockerfile. Notez que la valeur définie dans AWS remplace la valeur définie dans le Dockerfile, si vous avez défini les deux. - Définissez les variables d’environnement suivantes dans AWS :
- Définissez
DD_LAMBDA_HANDLER
sur votre gestionnaire d’origine, par exemple myfunc.handler
. - Définissez
DD_TRACE_ENABLED
sur true
. - Définissez
DD_API_KEY
sur votre clé d’API Datadog, disponible sur la page de gestion des API.
- Si vous le souhaitez, ajoutez des tags
service
et env
avec les valeurs appropriées dans votre fonction.
Installation
Vous pouvez installer la bibliothèque Lambda Datadog en tant que couche (option recommandée) ou en tant que package Python.
La version mineure du package datadog-lambda
correspond toujours à la version de la couche. Par exemple, datadog-lambda v0.5.0 correspond au contenu de la version 5 de la couche.
Utiliser la couche
Configurez les couches pour votre fonction Lambda à l’aide de l’ARN, en respectant le format suivant :
arn:aws:lambda:<RÉGION_AWS>:464622532012:layer:Datadog-<RUNTIME>:<VERSION>
arn:aws-us-gov:lambda:<RÉGION_AWS>:002406178527:layer:Datadog-<RUNTIME>:<VERSION>
Les options RUNTIME
disponibles sont Python27
, Python36
, Python37
et Python38
. Pour VERSION
, consultez la dernière version. Exemple :
arn:aws:lambda:us-east-1:464622532012:layer:Datadog-Python37:19
arn:aws-us-gov:lambda:us-gov-east-1:002406178527:layer:Datadog-Python37:19
Utiliser le package
Installez datadog-lambda
et ses dépendances localement dans le dossier du projet de votre fonction. Remarque : datadog-lambda
dépend de ddtrace
, qui a recours à des extensions natives ; ces extensions doivent donc être installées et compilées dans un environnement Linux. Par exemple, vous pouvez utiliser dockerizePip pour le plug-in Serverless Framework et –use-container pour AWS SAM. Pour en savoir plus, consultez la documentation relative à l’ajout de dépendances à votre package de déploiement de fonction.
pip install datadog-lambda -t ./
Consultez la dernière version.
Installer l’extension Lambda Datadog
Configurez les couches pour votre fonction Lambda à l’aide de l’ARN, en respectant le format suivant :
arn:aws:lambda:<RÉGION_AWS>:464622532012:layer:Datadog-Extension:<VERSION_EXTENSION>
arn:aws-us-gov:lambda:<RÉGION_AWS>:002406178527:layer:Datadog-Extension:<VERSION_EXTENSION>
Pour VERSION_EXTENSION
, consultez la dernière version.
Configuration
Pour configurer la fonction, suivez les étapes ci-dessous :
- Définissez le gestionnaire de votre fonction sur
datadog_lambda.handler.handler
. - Définissez la variable d’environnement
DD_LAMBDA_HANDLER
sur votre gestionnaire d’origine, comme myfunc.handler
. - Définissez la variable d’environnement
DD_TRACE_ENABLED
sur true
. - Définissez la variable d’environnement
DD_API_KEY
sur votre clé d’API Datadog, disponible sur la page de gestion des API. - Vous pouvez également définir des tags
service
et env
pour votre fonction avec des valeurs correspondantes.