Tracciamento delle chiamate AWS SDK con X-Ray SDK per Node.js - 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à.

Tracciamento delle chiamate AWS SDK con X-Ray SDK per Node.js

Quando l'applicazione effettua chiamate per AWS services archiviare dati, scrivere in una coda o inviare notifiche, X-Ray SDK per Node.js tiene traccia delle chiamate a valle in sottosegmenti. Le risorse tracciate AWS services e a cui accedi all'interno di tali servizi (ad esempio, un bucket Amazon S3 o una coda Amazon SQS) vengono visualizzate come nodi downstream sulla mappa di traccia nella console X-Ray.

Client Instrument AWS SDK creati tramite V2 o V3.AWS SDK for JavaScriptAWS SDK for JavaScript Ogni versione AWS SDK offre metodi diversi per la strumentazione dei client SDK. AWS

Nota

Attualmente, l' AWS X-Ray SDK per Node.js restituisce meno informazioni sui segmenti durante la strumentazione dei client AWS SDK for JavaScript V3, rispetto alla strumentazione dei client V2. Ad esempio, i sottosegmenti che rappresentano le chiamate a DynamoDB non restituiranno il nome della tabella. Se hai bisogno di queste informazioni sui segmenti nelle tue tracce, prendi in considerazione l'utilizzo della versione V2. AWS SDK for JavaScript

AWS SDK for JavaScript V2

Puoi utilizzare tutti i client AWS SDK V2 inserendo l'istruzione aws-sdk require in una chiamata a. AWSXRay.captureAWS

Esempio app.js - Strumentazione SDK AWS
const AWS = AWSXRay.captureAWS(require('aws-sdk'));

Per strumentare i singoli client, inserisci il tuo client AWS SDK in una chiamata a. AWSXRay.captureAWSClient Ad esempio, per analizzare un client AmazonDynamoDB:

Esempio app.js - Strumentazione client DynamoDB
const AWSXRay = require('aws-xray-sdk'); ... const ddb = AWSXRay.captureAWSClient(new AWS.DynamoDB());
avvertimento

Non utilizzare captureAWS e captureAWSClient insieme. Ciò causerà sottosegmenti duplicati.

Se desideri utilizzarla TypeScriptcon i moduli ECMAScript (ESM) per caricare il JavaScript codice, usa il seguente esempio per importare le librerie:

Esempio app.js - strumentazione SDK AWS
import * as AWS from 'aws-sdk'; import * as AWSXRay from 'aws-xray-sdk';

Per strumentare tutti i AWS client con ESM, usa il seguente codice:

Esempio app.js - Strumentazione AWS SDK
import * as AWS from 'aws-sdk'; import * as AWSXRay from 'aws-xray-sdk'; const XRAY_AWS = AWSXRay.captureAWS(AWS); const ddb = new XRAY_AWS.DynamoDB();

Per tutti i servizi, puoi vedere il nome dell'API richiamata nella console X-Ray. Per un sottoinsieme di servizi, l'SDK X-Ray aggiunge informazioni al segmento per fornire una maggiore granularità nella mappa dei servizi.

Ad esempio, quando si effettua una chiamata con un client DynamoDB con strumentazione, l'SDK aggiunge il nome della tabella al segmento per le chiamate destinate a una tabella. Nella console, ogni tabella appare come un nodo separato nella mappa dei servizi, con un nodo DynamoDB generico per le chiamate che non hanno come destinazione una tabella.

Esempio Sottosegmento per una chiamata a DynamoDB per salvare un elemento
{ "id": "24756640c0d0978a", "start_time": 1.480305974194E9, "end_time": 1.4803059742E9, "name": "DynamoDB", "namespace": "aws", "http": { "response": { "content_length": 60, "status": 200 } }, "aws": { "table_name": "scorekeep-user", "operation": "UpdateItem", "request_id": "UBQNSO5AEM8T4FDA4RQDEB94OVTDRVV4K4HIRGVJF66Q9ASUAAJG", } }

Quando si accede alle risorse con nome, le chiamate ai seguenti servizi creano ulteriori nodi della mappa del servizio. Le chiamate che non sono hanno come obiettivo risorse specifiche creano un nodo generico per il servizio.

  • Amazon DynamoDB: nome della tabella

  • Amazon Simple Storage Service: nome del bucket e della chiave

  • Amazon Simple Queue Service: nome della coda

AWS SDK for JavaScript V3

La AWS SDK for JavaScript V3 è modulare, quindi il codice carica solo i moduli necessari. Per questo motivo, non è possibile strumentare tutti i client AWS SDK poiché la V3 non supporta il metodo. captureAWS

Se desideri utilizzarlo TypeScript con i moduli ECMAScript (ESM) per caricare il JavaScript codice, puoi utilizzare il seguente esempio per importare le librerie:

import * as AWS from 'aws-sdk'; import * as AWSXRay from 'aws-xray-sdk';

Strumenta ogni client AWS SDK utilizzando il metodo. AWSXRay.captureAWSv3Client Ad esempio, per analizzare un client AmazonDynamoDB:

Esempio app.js - Strumentazione client DynamoDB che utilizza SDK per Javascript V3
const AWSXRay = require('aws-xray-sdk'); const { DynamoDBClient } = require("@aws-sdk/client-dynamodb"); ... const ddb = AWSXRay.captureAWSv3Client(new DynamoDBClient({ region: "region" }));

Quando si utilizza AWS SDK for JavaScript V3, i metadati come il nome della tabella, il nome del bucket e della chiave o il nome della coda non vengono attualmente restituiti, pertanto la mappa di traccia non conterrà nodi discreti per ogni risorsa denominata, come accade quando si strumentano i client SDK utilizzando la V2. AWS AWS SDK for JavaScript

Esempio Sottosegmento per una chiamata a DynamoDB per salvare un elemento, quando si utilizza la V3 AWS SDK for JavaScript
{ "id": "24756640c0d0978a", "start_time": 1.480305974194E9, "end_time": 1.4803059742E9, "name": "DynamoDB", "namespace": "aws", "http": { "response": { "content_length": 60, "status": 200 } }, "aws": { "operation": "UpdateItem", "request_id": "UBQNSO5AEM8T4FDA4RQDEB94OVTDRVV4K4HIRGVJF66Q9ASUAAJG", } }