View a markdown version of this page

Agregue anotaciones y metadatos a los segmentos con el X-Ray SDK para Node.js - AWS X-Ray

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Agregue anotaciones y metadatos a los segmentos con el X-Ray SDK para Node.js

nota

X-Ray SDK/Daemon Aviso de mantenimiento: el 25 de febrero de 2026, AWS X-Ray SDKs/Daemon entrará en modo de mantenimiento, en el que las versiones del X-Ray SDK y Daemon AWS se limitarán a abordar únicamente los problemas de seguridad. Para obtener más información sobre la cronología del soporte, consulte Cronología de X-Ray SDK y Daemon Support. Recomendamos migrar a. OpenTelemetry Para obtener más información sobre la migración a OpenTelemetry, consulte Migración de una X-Ray instrumentación a otra. OpenTelemetry

Puede registrar información adicional acerca de las solicitudes, el entorno o su aplicación con anotaciones y metadatos. Puedes añadir anotaciones y metadatos a los segmentos que crea el X-Ray SDK o a los subsegmentos personalizados que crees.

Las anotaciones son pares de clave-valor con valores de cadena, numéricos o booleanos. Las anotaciones se indexan para su uso con expresiones de filtro. Utilice anotaciones para registrar los datos que desee utilizar para agrupar rastros en la consola o cuando llame a la API de GetTraceSummaries.

Los metadatos son pares de clave-valor con valores de cualquier tipo, por ejemplo objetos y listas, pero que no se indexan para utilizarlos con expresiones de filtro. Utilice los metadatos para registrar datos adicionales que desee almacenar en el rastro, pero que no necesite usar para hacer búsquedas.

Además de anotaciones y metadatos, también puede registrar cadenas de ID de usuario en los segmentos. Los identificadores de usuario se registran en un campo aparte en segmentos y se indexan para su uso con la búsqueda.

Grabar anotaciones con el SDK para X-Ray Node.js

Utilice anotaciones para registrar información sobre segmentos o subsegmentos que desee indexar para las búsquedas.

Requisitos de anotación
  • Claves: la clave de una X-Ray anotación puede tener hasta 500 caracteres alfanuméricos. No se pueden usar espacios ni símbolos, excepto el punto (.)

  • Valores: el valor de una X-Ray anotación puede tener hasta 1000 caracteres Unicode.

  • Número de anotaciones: se pueden utilizar hasta 50 anotaciones por rastro.

Para registrar anotaciones
  1. Obtenga una referencia al segmento o subsegmento actual.

    var AWSXRay = require('aws-xray-sdk'); ... var document = AWSXRay.getSegment();
  2. Llame a addAnnotation con una clave de cadena y un valor booleano, numérico o de cadena.

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

    El siguiente ejemplo muestra cómo llamar a addAnnotation con una clave de cadena que incluye un punto y un valor booleano, numérico o de cadena.

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

El SDK registra las anotaciones como pares de clave-valor en un objeto annotations del documento de segmento. Si llama dos veces a addAnnotation con la misma clave, se sobrescriben los valores previamente registrados en ese segmento o subsegmento.

Para encontrar rastros que tengan anotaciones con valores específicos, utilice la palabra clave annotation[key] en una expresión de filtro.

ejemplo app.js: anotaciones
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) { ...

Grabación de metadatos con el SDK para X-Ray Node.js

Utilice los metadatos para registrar información sobre segmentos o subsegmentos que no necesite indexar para las búsquedas. Los valores de metadatos pueden ser cadenas, números, booleanos o cualquier otro objeto que se pueda serializar en un objeto o matriz JSON.

Para registrar metadatos
  1. Obtenga una referencia al segmento o subsegmento actual.

    var AWSXRay = require('aws-xray-sdk'); ... var document = AWSXRay.getSegment();
  2. Llame a addMetadata con una clave de cadena, un valor booleano, numérico, de cadena o de objeto y un espacio de nombres de cadena.

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

    o

    Llame a addMetadata con solo una clave y un valor.

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

Si no especifica un espacio de nombres, el SDK utiliza default. Si llama dos veces a addMetadata con la misma clave, se sobrescriben los valores previamente registrados en ese segmento o subsegmento.

Grabar los ID de usuario con el X-Ray SDK para Node.js

Registre identificadores de usuario en segmentos de solicitud para identificar al usuario que envió la solicitud. Esta operación no es compatible con AWS Lambda las funciones porque los segmentos de los entornos Lambda son inmutables. La llamada setUser solo se puede efectuar con segmentos, no con subsegmentos.

Para registrar identificadores de usuario
  1. Obtenga una referencia al segmento o subsegmento actual.

    var AWSXRay = require('aws-xray-sdk'); ... var document = AWSXRay.getSegment();
  2. Llame a setUser() con un ID de cadena del usuario que envió la solicitud.

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

Puede llamar a setUser para registrar el ID de usuario en cuanto la aplicación rápida comience a procesar una solicitud. Si va a utilizar el segmento únicamente para establecer el ID de usuario, puede encadenar las llamadas en una sola línea.

ejemplo app.js: ID de usuario
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) { ...

Para buscar rastros de un ID de usuario, utilice la palabra clave user en una expresión de filtro.