Menelusuri panggilan AWS SDK dengan X-Ray SDK untuk Node.js - AWS X-Ray

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menelusuri panggilan AWS SDK dengan X-Ray SDK untuk Node.js

Saat aplikasi Anda melakukan panggilan Layanan AWS untuk menyimpan data, menulis ke antrean, atau mengirim notifikasi, X-Ray SDK untuk Node.js melacak panggilan hilir di subsegmen. Ditelusuri Layanan AWS, dan sumber daya yang Anda akses dalam layanan tersebut (misalnya, bucket Amazon S3 atau antrean Amazon SQS), muncul sebagai node hilir pada peta jejak di konsol X-Ray.

Klien AWS SDK instrumen yang Anda buat melalui AWS SDK for JavaScript V2 atau AWS SDK for JavaScript V3. Setiap versi AWS SDK menyediakan metode yang berbeda untuk menginstrumentasi klien AWS SDK.

catatan

Saat ini, AWS X-Ray SDK untuk Node.js mengembalikan lebih sedikit informasi segmen saat menginstrumentasi klien AWS SDK for JavaScript V3, dibandingkan dengan menginstrumentasi klien V2. Misalnya, subsegmen yang mewakili panggilan ke DynamoDB tidak akan mengembalikan nama tabel. Jika Anda memerlukan informasi segmen ini di jejak Anda, pertimbangkan untuk menggunakan AWS SDK for JavaScript V2.

AWS SDK for JavaScript V2

Anda dapat AWS menginstruksikan semua klien SDK V2 dengan membungkus pernyataan aws-sdk require Anda dalam panggilan ke. AWSXRay.captureAWS

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

Untuk menginstrumentasi klien individual, bungkus klien AWS SDK Anda dalam panggilan keAWSXRay.captureAWSClient. Misalnya, untuk instrumen klien AmazonDynamoDB:

contoh app.js - instrumentasi klien DynamoDB
const AWSXRay = require('aws-xray-sdk'); ... const ddb = AWSXRay.captureAWSClient(new AWS.DynamoDB());
Awas

Jangan gunakan kedua captureAWS dan captureAWSClient bersama-sama. Hal ini akan menyebabkan duplikat subsegment.

Jika Anda ingin menggunakan TypeScriptmodul ECMAScript (ESM) untuk memuat JavaScript kode Anda, gunakan contoh berikut untuk mengimpor pustaka:

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

Untuk instrumen semua AWS klien dengan ESM, gunakan kode berikut:

contoh app.js - AWS Instrumentasi 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();

Untuk semua layanan, Anda dapat melihat nama API yang dipanggil di konsol X-Ray. Untuk subset layanan, X-Ray SDK menambahkan informasi ke segmen untuk memberikan lebih banyak perincian di peta layanan.

Sebagai contoh, ketika Anda melakukan panggilan dengan klien DynamoDB berinstrumen, SDK menambahkan nama tabel ke segmen untuk panggilan yang menargetkan tabel. Di konsol tersebut, setiap tabel muncul sebagai simpul terpisah di peta layanan, dengan simpul DynamoDB generik untuk panggilan yang tidak menargetkan tabel.

contoh Subsegmen untuk panggilan ke DynamoDB untuk menyimpan item
{ "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", } }

Ketika Anda mengakses sumber daya bernama, panggilan ke layanan berikut membuat simpul tambahan di peta layanan. Panggilan yang tidak menargetkan sumber daya tertentu membuat simpul generik untuk layanan tersebut.

  • Amazon DynamoDB – Nama tabel

  • Amazon Simple Storage Service – Bucket dan nama kunci

  • Amazon Simple Queue Service – Nama antrean

AWS SDK for JavaScript V3

AWS SDK for JavaScript V3 bersifat modular, jadi kode Anda hanya memuat modul yang dibutuhkannya. Karena itu, tidak mungkin untuk menginstruksikan semua klien AWS SDK karena V3 tidak mendukung metode inicaptureAWS.

Jika Anda ingin menggunakan TypeScript dengan ECMAScript Modules (ESM) untuk memuat JavaScript kode Anda, Anda dapat menggunakan contoh berikut untuk mengimpor pustaka:

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

Instrumen setiap klien AWS SDK menggunakan AWSXRay.captureAWSv3Client metode ini. Misalnya, untuk instrumen klien AmazonDynamoDB:

contoh app.js - instrumentasi klien DynamoDB menggunakan SDK untuk Javascript V3
const AWSXRay = require('aws-xray-sdk'); const { DynamoDBClient } = require("@aws-sdk/client-dynamodb"); ... const ddb = AWSXRay.captureAWSv3Client(new DynamoDBClient({ region: "region" }));

Saat menggunakan AWS SDK for JavaScript V3, metadata seperti nama tabel, bucket dan nama kunci, atau nama antrian, saat ini tidak dikembalikan, dan oleh karena itu peta jejak tidak akan berisi node diskrit untuk setiap sumber daya bernama seperti saat menginstrumentasi AWS klien SDK menggunakan V2. AWS SDK for JavaScript

contoh Subsegmen untuk panggilan ke DynamoDB untuk menyimpan item, saat menggunakan 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", } }