Ajoutez des annotations et des métadonnées aux segments 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.

Ajoutez des annotations et des métadonnées aux segments avec le X-Ray SDK pour Node.js

Vous pouvez enregistrer des informations supplémentaires sur les demandes, l'environnement ou votre application à l'aide d'annotations et de métadonnées. Vous pouvez ajouter des annotations et des métadonnées aux segments SDK créés par le X-Ray ou aux sous-segments personnalisés que vous créez.

Les annotations sont des paires clé-valeur avec des chaînes, des nombres ou des valeurs booléennes. Les annotations sont indexées pour être utilisées avec les expressions de filtre. Utilisez des annotations pour enregistrer les données que vous souhaitez utiliser pour regrouper les traces dans la console ou lorsque vous appelez le GetTraceSummariesAPI.

Les métadonnées sont des paires clé-valeur qui peuvent contenir des valeurs de n'importe quel type, y compris des objets et des listes, mais qui ne sont pas indexées pour être utilisées avec des expressions de filtre. Utilisez les métadonnées pour enregistrer des données supplémentaires que vous souhaitez stocker dans le traçage, mais que vous n'avez pas besoin d'utiliser pour la recherche.

En plus des annotations et des métadonnées, vous pouvez également enregistrer les chaînes d'ID utilisateur sur des segments. IDsLes utilisateurs sont enregistrés dans un champ distinct sur les segments et sont indexés pour être utilisés dans le cadre de la recherche.

Enregistrer des annotations avec le X-Ray SDK pour Node.js

Utilisez les annotations pour enregistrer les informations sur les segments ou sous-segments qui doivent être indexés pour la recherche.

Exigences liées aux annotations
  • Clés — La clé d'une annotation X-Ray peut comporter jusqu'à 500 caractères alphanumériques. Vous ne pouvez pas utiliser d'espaces ou de symboles autres qu'un point ou un point (.)

  • Valeurs — La valeur d'une annotation X-Ray peut comporter jusqu'à 1 000 caractères Unicode.

  • Nombre d'annotations : vous pouvez utiliser jusqu'à 50 annotations par trace.

Pour enregistrer les annotations
  1. Obtenez une référence au segment ou sous-segment en cours.

    var AWSXRay = require('aws-xray-sdk'); ... var document = AWSXRay.getSegment();
  2. Appelez addAnnotation avec une clé de type chaîne et une valeur de type booléen, numérique ou chaîne.

    document.addAnnotation("mykey", "my value");

    L'exemple suivant montre comment appeler putAnnotation avec une clé String qui inclut un point et une valeur booléenne, numérique ou chaîne.

    document.putAnnotation("testkey.test", "my value");

SDKEnregistre les annotations sous forme de paires clé-valeur dans un annotations objet du document segmenté. Si vous appelez deux fois addAnnotation avec la même clé, les valeurs précédemment enregistrées sur le même segment ou sous-segment sont remplacées.

Pour rechercher les suivis ayant des annotations avec des valeurs spécifiques, utilisez le mot clé annotation[key] dans une expression de filtre.

Exemple app.js - Annotations
var AWS = require('aws-sdk'); var AWSXRay = require('aws-xray-sdk'); var ddb = AWSXRay.captureAWSClient(new AWS.DynamoDB()); ... app.post('/signup', function(req, res) { var item = { 'email': {'S': req.body.email}, 'name': {'S': req.body.name}, 'preview': {'S': req.body.previewAccess}, 'theme': {'S': req.body.theme} }; var seg = AWSXRay.getSegment(); seg.addAnnotation('theme', req.body.theme); ddb.putItem({ 'TableName': ddbTable, 'Item': item, 'Expected': { email: { Exists: false } } }, function(err, data) { ...

Enregistrement de métadonnées avec le X-Ray SDK pour Node.js

Utilisez les métadonnées pour enregistrer des informations sur les segments ou sous-segments qui n'ont pas besoin d'être indexés pour la recherche. Les valeurs de métadonnées peuvent être des chaînes, des nombres, des booléens ou tout autre objet pouvant être sérialisé dans un JSON objet ou un tableau.

Pour enregistrer les métadonnées
  1. Obtenez une référence au segment ou sous-segment en cours.

    var AWSXRay = require('aws-xray-sdk'); ... var document = AWSXRay.getSegment();
  2. Appelez addMetadata avec une clé de type chaîne, une valeur de type booléen, numérique, chaîne ou objet et un espace de noms de type chaîne.

    document.addMetadata("my key", "my value", "my namespace");

    or

    Appelez addMetadata avec seulement une clé et une valeur.

    document.addMetadata("my key", "my value");

Si vous ne spécifiez pas d'espace de noms, les SDK utilisationsdefault. Si vous appelez deux fois addMetadata avec la même clé, les valeurs précédemment enregistrées sur le même segment ou sous-segment sont remplacées.

Utilisateur enregistrant IDs avec le X-Ray SDK pour Node.js

Enregistrez les segments utilisateur IDs sur demande pour identifier l'utilisateur qui a envoyé la demande. Cette opération n'est pas compatible avec AWS Lambda les fonctions car les segments dans les environnements Lambda sont immuables. L'appel setUser peut être appliqué uniquement aux segments, pas aux sous-segments.

Pour enregistrer un utilisateur IDs
  1. Obtenez une référence au segment ou sous-segment en cours.

    var AWSXRay = require('aws-xray-sdk'); ... var document = AWSXRay.getSegment();
  2. Appelez setUser() avec l'ID de type chaîne de l'utilisateur ayant envoyé la demande.

    var user = 'john123'; AWSXRay.getSegment().setUser(user);

Vous pouvez appeler setUser pour enregistrer l'ID utilisateur dès que votre application express commence à traiter une demande. Si vous n'utilisez le segment que pour définir l'ID utilisateur, vous pouvez chaîner les appels sur une seule ligne.

Exemple app.js - ID utilisateur
var AWS = require('aws-sdk'); var AWSXRay = require('aws-xray-sdk'); var uuidv4 = require('uuid/v4'); var ddb = AWSXRay.captureAWSClient(new AWS.DynamoDB()); ... app.post('/signup', function(req, res) { var userId = uuidv4(); var item = { 'userId': {'S': userId}, 'email': {'S': req.body.email}, 'name': {'S': req.body.name} }; var seg = AWSXRay.getSegment().setUser(userId); ddb.putItem({ 'TableName': ddbTable, 'Item': item, 'Expected': { email: { Exists: false } } }, function(err, data) { ...

Pour rechercher les suivis d'un ID utilisateur, utilisez le mot clé user dans une expression de filtre.