Activer les traces AWS X-Ray
Activer AWS X-Ray
Prérequis : installez l’intégration AWS.
- Assurez-vous que le document de stratégie de votre rôle AWS/Datadog comporte les autorisations suivantes :
xray:BatchGetTraces,
xray:GetTraceSummaries
L'autorisation `BatchGetTraces` renvoie la totalité des traces, tandis que `GetTraceSummaries` permet d'obtenir la liste des traces récentes.
Activez l’intégration X-Ray dans Datadog.
Si vous utilisez une clé principale client pour chiffrer les traces, ajoutez la méthode kms:Decrypt
à la stratégie au sein de laquelle la ressource correspond à la clé principale client utilisée pour X-Ray.
Remarque : l’activation de l’intégration AWS X-Ray augmente le nombre de spans indexées utilisées, ce qui peut avoir une incidence sur votre facturation.
Activer AWS X-Ray pour vos fonctions
Pour tirer le meilleur parti de l’intégration AWS X-Ray :
- Activez-la pour vos fonctions Lambda et vos instances d’API Gateway, soit en utilisant le plugin Serverless Framework soit manuellement.
- Installez les bibliothèques de tracing dans vos fonctions Lambda.
Plug-in Serverless Framework Datadog (conseillé)
Le plug-in Serverless Framework de Datadog active automatiquement X-Ray pour vos fonctions Lambda et vos instances d’API Gateway. Le plug-in se charge également d’ajouter la couche Lambda Datadog à toutes vos fonctions Node.js et Python.
Pour apprendre à utiliser le plug-in Serverless Framework, lisez cet article de blog et consultez la documentation (en anglais).
Enfin, installez et importez la bibliothèque client X-Ray dans votre fonction Lambda.
Configuration manuelle
Si vous n’utilisez pas Serverless Framework pour déployer votre application sans serveur, suivez ces instructions pour une configuration manuelle :
- Accédez à la fonction Lambda dans la console AWS que vous souhaitez instrumenter. Dans la section Debugging and error handling, cochez la case Enable active tracing afin d’activer X-Ray pour cette fonction.
- Accédez à la console API Gateway. Sélectionnez votre API ainsi que l’étape.
- Ensuite, depuis l’onglet Logs/Tracing, sélectionnez Enable X-Ray Tracing.
- Pour que ces changements prennent effet, accédez à Resources dans le volet de navigation sur la gauche et sélectionnez Actions. Ensuite, cliquez sur Deploy API.
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.
Enfin, installez et importez la bibliothèque client X-Ray dans votre fonction Lambda.
Installer les bibliothèques client X-Ray
La bibliothèque client X-Ray vous permet d’analyser vos requêtes HTTP envoyées aux API ainsi que les appels des services DynamoDB, S3, MySQL et PostgreSQL (auto-hébergé, Amazon RDS et Amazon Aurora), SQS et SNS.
Installez la bibliothèque, importez-la dans vos projets Lambda, puis patchez les services que vous souhaitez instrumenter.
Installer la bibliothèque de tracing X-Ray :
npm install aws-xray-sdk
# pour les utilisateurs de Yarn
yarn add aws-xray-sdk
Pour instrumenter le SDK AWS :
var AWSXRay = require('aws-xray-sdk-core');
var AWS = AWSXRay.captureAWS(require('aws-sdk'));
Pour instrumenter tous les appels HTTP en aval :
var AWSXRay = require('aws-xray-sdk');
AWSXRay.captureHTTPsGlobal(require('http'));
var http = require('http');
Pour instrumenter les requêtes PostgreSQL :
var AWSXRay = require('aws-xray-sdk');
var pg = AWSXRay.capturePostgres(require('pg'));
var client = new pg.Client();
Pour instrumenter les requêtes MySQL :
var AWSXRay = require('aws-xray-sdk');
var mysql = AWSXRay.captureMySQL(require('mysql'));
//...
var connection = mysql.createConnection(config);
Pour en savoir plus sur la configuration, la création de sous-segments et l’enregistrement d’annotations, consultez la documentation X-Ray pour Node.js.
Installer la bibliothèque de tracing X-Ray :
Pour patcher toutes les bibliothèques par défaut, ajoutez ce qui suit au fichier contenant vos gestionnaires de fonctions Lambda :
from aws_xray_sdk.core import xray_recorder
from aws_xray_sdk.core import patch_all
patch_all()
Notez que le tracing de aiohttp
nécessite une instrumentation spécifique.
Pour en savoir plus sur la configuration, la création de sous-segments et l’enregistrement d’annotations, consultez la documentation X-Ray pour Python.
Consultez la ressource suivante :
Consultez la ressource suivante :
Consultez la ressource suivante :
Consultez la ressource suivante :