Génération de sous-segments personnalisés avec le X-Ray SDK pour Node.js - AWS X-Ray

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Génération de sous-segments personnalisés avec le X-Ray SDK pour Node.js

Les sous-segments étendent le segment d'une trace avec des détails sur le travail effectué afin de répondre à une demande. Chaque fois que vous passez un appel avec un client instrumenté, le X-Ray SDK enregistre les informations générées dans un sous-segment. Vous pouvez créer des sous-segments supplémentaires pour regrouper d'autres sous-segments, pour mesurer les performances d'une section de code ou pour enregistrer des annotations et des métadonnées.

Sous-segments Express personnalisés

Pour créer un sous-segment personnalisé pour une fonction qui effectue des appels vers les services, utilisez la fonction captureAsyncFunc.

Exemple app.js - Sous segments personnalisés Express
var AWSXRay = require('aws-xray-sdk'); app.use(AWSXRay.express.openSegment('MyApp')); app.get('/', function (req, res) { var host = 'api.example.com'; AWSXRay.captureAsyncFunc('send', function(subsegment) { sendRequest(host, function() { console.log('rendering!'); res.render('index'); subsegment.close(); }); }); }); app.use(AWSXRay.express.closeSegment()); function sendRequest(host, cb) { var options = { host: host, path: '/', }; var callback = function(response) { var str = ''; response.on('data', function (chunk) { str += chunk; }); response.on('end', function () { cb(); }); } http.request(options, callback).end(); };

Dans cet exemple, l'application crée un sous-segment personnalisé nommé send pour les appels vers la fonction sendRequest. captureAsyncFunc transmet un sous-segment que vous devez fermer dans la fonction de rappel lorsque les appels asynchrones qu'elle effectue sont terminés.

Pour les fonctions synchrones, vous pouvez utiliser la fonction captureFunc qui ferme automatiquement le sous-segment dès la fin de l'exécution du bloc de fonction.

Lorsque vous créez un sous-segment au sein d'un segment ou d'un autre sous-segment, le X-Ray SDK for Node.js génère un identifiant pour celui-ci et enregistre l'heure de début et de fin.

Exemple Sous-segment avec des métadonnées
"subsegments": [{ "id": "6f1605cd8a07cb70", "start_time": 1.480305974194E9, "end_time": 1.4803059742E9, "name": "Custom subsegment for UserModel.saveUser function", "metadata": { "debug": { "test": "Metadata string from UserModel.saveUser" } },

Sous-segments Lambda personnalisés

SDKIl est configuré pour créer automatiquement un segment de façade fictif lorsqu'il détecte qu'il est en cours d'exécution dans Lambda. Pour créer un sous-segment de base, qui créera un AWS::Lambda::Function nœud unique sur la carte de trace X-Ray, appelez et réutilisez le segment de façade. Si vous créez manuellement un nouveau segment avec un nouvel ID (tout en partageant l'ID de suivi, l'ID parent et la décision d'échantillonnage), vous pourrez envoyer un nouveau segment.

Exemple app.js - sous-segments personnalisés manuels
const segment = AWSXRay.getSegment(); //returns the facade segment const subsegment = segment.addNewSubsegment('subseg'); ... subsegment.close(); //the segment is closed by the SDK automatically