Menghasilkan subsegment kustom 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.

Menghasilkan subsegment kustom dengan X-Ray SDK untuk Node.js

Subsegmen memperluas segmen pelacakan dengan detail tentang pekerjaan yang dilakukan untuk melayani permintaan. Setiap kali Anda melakukan panggilan dengan klien berinstrumen, X-Ray tersebut mencatat informasi yang dihasilkan dalam subsegmen. Anda dapat membuat subsegment tambahan untuk mengelompokkan subsegment lain, untuk mengukur performa bagian kode, atau untuk mencatat anotasi dan metadata.

Subsegmen Express Kustom

catatan

End-of-support pemberitahuan — Pada tanggal 25 Februari 2027, AWS X-Ray akan menghentikan dukungan untuk AWS X-Ray SDKs dan daemon. Setelah 25 Februari 2027, Anda tidak akan lagi menerima pembaruan atau rilis. Untuk informasi selengkapnya tentang garis waktu dukungan, lihatX-Ray SDK dan daemon akhir garis waktu dukungan. Kami merekomendasikan untuk bermigrasi ke OpenTelemetry. Untuk informasi lebih lanjut tentang migrasi ke OpenTelemetry, lihat Migrasi dari instrumentasi X-Ray ke instrumentasi. OpenTelemetry

Untuk membuat subsegmen kustom untuk fungsi yang membuat panggilan ke layanan hilir, gunakan fungsi captureAsyncFunc.

contoh app.js - subsegment Express kustom
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(); };

Dalam contoh ini, aplikasi membuat subsegmen kustom bernama send untuk panggilan ke fungsi sendRequest. captureAsyncFunc melewati subsegmen yang harus Anda tutup dalam fungsi panggilan balik ketika panggilan asinkron yang dibuatnya selesai.

Untuk fungsi sinkron, Anda dapat menggunakan fungsi captureFunc, yang menutup subsegmen secara otomatis segera setelah blok fungsi selesai mengeksekusi.

Ketika Anda membuat subsegmen dalam segmen atau subsegmen lain, X-Ray SDK untuk Node.js menghasilkan ID untuk itu dan mencatat waktu mulai dan waktu berakhir.

contoh Subsegmen dengan metadata
"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" } },

Subsegmen Lambda Kustom

SDK dikonfigurasi untuk secara otomatis membuat segmen fasad placeholder saat mendeteksi itu berjalan di Lambda. Untuk membuat subsegement dasar, yang akan membuat satu AWS::Lambda::Function node pada peta jejak X-Ray, panggil dan gunakan kembali segmen fasad. Jika Anda secara manual membuat segmen baru dengan ID baru (saat berbagi ID pelacakan, ID induk, dan sampel keputusan), Anda akan dapat mengirim segmen baru.

contoh app.js - subsegment kustom manual
const segment = AWSXRay.getSegment(); //returns the facade segment const subsegment = segment.addNewSubsegment('subseg'); ... subsegment.close(); //the segment is closed by the SDK automatically