Generación de subsegmentos personalizados con 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.

Generación de subsegmentos personalizados con X-Ray SDK para Node.js

Los subsegmentos amplían el segmento de un rastro con detalles sobre el trabajo realizado para atender una solicitud. Cada vez que realiza una llamada con un cliente instrumentado, el X-Ray SDK graba la información generada en un subsegmento. Puede crear subsegmentos adicionales para agrupar otros subsegmentos, medir el rendimiento de una sección de código o registrar anotaciones y metadatos.

Subsegmentos Express personalizados

Para crear un subsegmento personalizado para una función que realiza llamadas a servicios posteriores, utilice la función captureAsyncFunc.

ejemplo app.js: subsegmentos personalizados 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(); };

En este ejemplo, la aplicación crea un subsegmento personalizado denominado send para realizar llamadas a la función sendRequest. captureAsyncFunc transfiere un subsegmento que debe cerrar dentro de la función de devolución de llamada cuando se completen las llamadas asíncronas que realiza.

Para las funciones síncronas, puede utilizar la función captureFunc, la cual cierra de forma automática el subsegmento en cuanto el bloque de funciones termina de ejecutarse.

Al crear un subsegmento dentro de un segmento u otro subsegmento, el X-Ray SDK for Node.js genera un identificador para él y registra la hora de inicio y la hora de finalización.

ejemplo Subsegmentos con metadatos
"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" } },

Subsegmentos personalizados de Lambda

SDKEstá configurado para crear automáticamente un segmento de fachada como marcador de posición cuando detecta que se está ejecutando en Lambda. Para crear un subsegmento básico, que creará un único AWS::Lambda::Function nodo en el mapa de trazas de X-Ray, llame al segmento de fachada y reutilícelo. Si crea manualmente un nuevo segmento con un nuevo ID (mientras comparte el ID de registro de seguimiento, el ID principal y la decisión de muestreo) podrá enviar un nuevo segmento.

ejemplo app.js - subsegmentos personalizados manuales
const segment = AWSXRay.getSegment(); //returns the facade segment const subsegment = segment.addNewSubsegment('subseg'); ... subsegment.close(); //the segment is closed by the SDK automatically