Generazione di sottosegmenti personalizzati con X-Ray for Node.js SDK - AWS X-Ray

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Generazione di sottosegmenti personalizzati con X-Ray for Node.js SDK

I sottosegmenti estendono il segmento di una traccia con dettagli sul lavoro svolto per soddisfare una richiesta. Ogni volta che si effettua una chiamata con un client dotato di strumentazione, l'SDKX-Ray registra le informazioni generate in un sottosegmento. È possibile creare sottosegmenti aggiuntivi per raggruppare altri sottosegmenti, misurare le prestazioni di una sezione di codice o registrare annotazioni e metadati.

Sottosegmenti Express personalizzati

Per creare un sottosegmento personalizzato per una funzione che effettua chiamate a servizi a valle, utilizza la funzione captureAsyncFunc.

Esempio app.js - Sottosegmenti personalizzati 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(); };

In questo esempio, l'applicazione crea un sottosegmento personalizzato denominato send per le chiamate alla funzione sendRequest. captureAsyncFunc trasferisce un sottosegmento che è necessario chiudere all'interno della funzione di callback quando le chiamate asincrone invocate vengono completate.

Per le funzioni sincrone, puoi utilizzare la funzione captureFunc che chiude il sottosegmento automaticamente non appena il blocco della funzione si conclude.

Quando si crea un sottosegmento all'interno di un segmento o di un altro sottosegmento, X-Ray SDK for Node.js genera un ID per tale sottosegmento e registra l'ora di inizio e l'ora di fine.

Esempio Sottosegmento con metadati
"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" } },

Sottosegmenti Lambda personalizzati

SDKÈ configurato per creare automaticamente un segmento di facciata segnaposto quando rileva che è in esecuzione in Lambda. Per creare un sottosegmento di base, che creerà un singolo AWS::Lambda::Function nodo sulla mappa di tracciamento a raggi X, richiamate e riutilizzate il segmento di facciata. Se crei manualmente un nuovo segmento con un nuovo ID (mentre condividi l'ID di tracciamento, l'ID padre e la decisione di campionamento), sarai in grado di inviare un nuovo segmento.

Esempio app.js - sottosegmenti personalizzati manualmente
const segment = AWSXRay.getSegment(); //returns the facade segment const subsegment = segment.addNewSubsegment('subseg'); ... subsegment.close(); //the segment is closed by the SDK automatically