Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menginstrumentasi kode Node.js di AWS Lambda
Lambda terintegrasi dengan AWS X-Ray untuk membantu Anda melacak, men-debug, dan mengoptimalkan aplikasi Lambda. Anda dapat menggunakan X-Ray untuk melacak permintaan saat melintasi sumber daya dalam aplikasi Anda, yang mungkin termasuk fungsi Lambda dan layanan lainnya. AWS
Untuk mengirim data penelusuran ke X-Ray, Anda dapat menggunakan salah satu dari dua SDK pustaka:
-
AWS Distro for OpenTelemetry (ADOT)
— Distribusi () yang aman, siap produksi, dan AWS didukung (). OpenTelemetry OTel SDK -
AWS X-Ray SDK for Node.js— An SDK untuk menghasilkan dan mengirim data jejak ke X-Ray.
Masing-masing SDKs menawarkan cara untuk mengirim data telemetri Anda ke layanan X-Ray. Anda kemudian dapat menggunakan X-Ray untuk melihat, memfilter, dan mendapatkan wawasan tentang metrik kinerja aplikasi Anda untuk mengidentifikasi masalah dan peluang pengoptimalan.
penting
X-Ray dan Powertools untuk AWS Lambda SDKs adalah bagian dari solusi instrumentasi terintegrasi yang ditawarkan oleh. AWS Lapisan ADOT Lambda adalah bagian dari standar industri untuk melacak instrumentasi yang mengumpulkan lebih banyak data secara umum, tetapi mungkin tidak cocok untuk semua kasus penggunaan. Anda dapat menerapkan end-to-end penelusuran di X-Ray menggunakan salah satu solusi. Untuk mempelajari lebih lanjut tentang memilih di antara mereka, lihat Memilih antara AWS Distro untuk Telemetri Terbuka dan X-Ray. SDKs
Bagian-bagian
- Menggunakan ADOT untuk menginstruksikan fungsi Node.js Anda
- Menggunakan X-Ray SDK untuk instrumen fungsi Node.js Anda
- Mengaktifkan penelusuran dengan konsol Lambda
- Mengaktifkan penelusuran dengan Lambda API
- Mengaktifkan penelusuran dengan AWS CloudFormation
- Menafsirkan jejak X-Ray
- Menyimpan dependensi runtime dalam lapisan (X-Ray) SDK
Menggunakan ADOT untuk menginstruksikan fungsi Node.js Anda
ADOTmenyediakan lapisan Lambda yang dikelola sepenuhnya yang mengemas semua yang Anda butuhkan untuk mengumpulkan data telemetri menggunakan file. OTel SDK Dengan menggunakan lapisan ini, Anda dapat menginstruksikan fungsi Lambda Anda tanpa harus memodifikasi kode fungsi apa pun. Anda juga dapat mengonfigurasi lapisan Anda untuk melakukan inisialisasi kustom. OTel Untuk informasi selengkapnya, lihat Konfigurasi khusus untuk ADOT Kolektor di Lambda
Untuk runtime Node.js, Anda dapat menambahkan layer Lambda AWS terkelola ADOT untuk Javascript untuk menginstruksikan fungsi Anda secara otomatis. Untuk petunjuk rinci tentang cara menambahkan layer ini, lihat AWS
Distro untuk OpenTelemetry Lambda JavaScript Support
Menggunakan X-Ray SDK untuk instrumen fungsi Node.js Anda
Untuk merekam detail tentang panggilan yang dilakukan oleh fungsi Lambda Anda ke sumber daya lain dalam aplikasi Anda, Anda juga dapat menggunakan. AWS X-Ray SDK for Node.js Untuk mendapatkanSDK, tambahkan aws-xray-sdk-core
paket ke dependensi aplikasi Anda.
contoh kosong-nodejs/package.json
{ "name": "blank-nodejs", "version": "1.0.0", "private": true, "devDependencies": { "jest": "29.7.0" }, "dependencies": { "@aws-sdk/client-lambda": "3.345.0",
"aws-xray-sdk-core": "3.5.3"
}, "scripts": { "test": "jest" } }
Untuk instrumen AWS SDK klien di AWS SDK for JavaScript v3, bungkus instance klien dengan captureAWSv3Client
metode.
contoh blank-nodejs/function/index.js - Menelusuri klien AWS SDK
const
AWSXRay = require('aws-xray-sdk-core');
const{ LambdaClient, GetAccountSettingsCommand } = require('@aws-sdk/client-lambda');
// Create client outside of handler to reuse constlambda = AWSXRay.captureAWSv3Client(new LambdaClient());
// Handler exports.handler = async function(event, context) { event.Records.forEach(record => { ...
Runtime Lambda menetapkan beberapa variabel lingkungan untuk mengkonfigurasi X-Ray. SDK Misalnya, Lambda mengatur AWS_XRAY_CONTEXT_MISSING
LOG_ERROR
untuk menghindari melempar kesalahan runtime dari X-Ray. SDK Untuk menetapkan strategi yang hilang dalam konteks khusus, timpa variabel lingkungan dalam konfigurasi fungsi Anda agar tidak memiliki nilai, lalu Anda dapat menetapkan konteks yang tidak memiliki strategi yang terprogram.
contoh Kode inisialisasi contoh
const AWSXRay = require('aws-xray-sdk-core'); // Configure the context missing strategy to do nothing AWSXRay.setContextMissingStrategy(() => {});
Untuk informasi selengkapnya, lihat Gunakan variabel lingkungan Lambda untuk mengonfigurasi nilai dalam kode.
Setelah Anda menambahkan dependensi yang benar dan membuat perubahan kode yang diperlukan, aktifkan penelusuran dalam konfigurasi fungsi Anda melalui konsol Lambda atau. API
Mengaktifkan penelusuran dengan konsol Lambda
Untuk mengaktifkan penelusuran aktif pada fungsi Lambda Anda dengan konsol, ikuti langkah-langkah berikut:
Untuk mengaktifkan penelusuran aktif
Buka halaman Fungsi
di konsol Lambda. -
Pilih fungsi.
Pilih Konfigurasi dan kemudian pilih Alat Pemantauan dan operasi.
Pilih Edit.
-
Di bawah X-Ray, aktifkan penelusuran Aktif.
-
Pilih Simpan.
Mengaktifkan penelusuran dengan Lambda API
Konfigurasikan penelusuran pada fungsi Lambda Anda dengan AWS CLI AWS SDK atau, gunakan operasi berikutAPI:
Contoh AWS CLI perintah berikut memungkinkan penelusuran aktif pada fungsi bernama my-function.
aws lambda update-function-configuration --function-name my-function \ --tracing-config Mode=Active
Mode penelusuran adalah bagian dari konfigurasi khusus versi saat Anda memublikasikan versi fungsi Anda. Anda tidak dapat mengubah mode pelacakan pada versi yang telah diterbitkan.
Mengaktifkan penelusuran dengan AWS CloudFormation
Untuk mengaktifkan penelusuran pada AWS::Lambda::Function
sumber daya dalam AWS CloudFormation templat, gunakan TracingConfig
properti.
contoh function-inline.yml – Konfigurasi pelacakan
Resources: function: Type: AWS::Lambda::Function Properties:
TracingConfig: Mode: Active
...
Untuk sumber AWS::Serverless::Function
daya AWS Serverless Application Model (AWS SAM), gunakan Tracing
properti.
contoh template.yml – Konfigurasi pelacakan
Resources: function: Type: AWS::Serverless::Function Properties:
Tracing: Active
...
Menafsirkan jejak X-Ray
Fungsi Anda memerlukan izin untuk mengunggah data jejak ke X-Ray. Saat Anda mengaktifkan penelusuran di konsol Lambda, Lambda menambahkan izin yang diperlukan ke peran eksekusi fungsi Anda. Jika tidak, tambahkan AWSXRayDaemonWriteAccess
Setelah mengonfigurasi penelusuran aktif, Anda dapat mengamati permintaan tertentu melalui aplikasi Anda. Grafik layanan X-Ray menunjukkan informasi tentang aplikasi Anda dan semua komponennya. Contoh berikut menunjukkan aplikasi dengan dua fungsi. Fungsi utama memproses kejadian dan terkadang mengembalikan kesalahan. Fungsi kedua di bagian atas memproses kesalahan yang muncul di grup log pertama dan menggunakan AWS SDK untuk memanggil X-Ray, Amazon Simple Storage Service (Amazon S3), dan Amazon Logs. CloudWatch
X-Ray tidak melacak semua permintaan ke aplikasi Anda. X-Ray menerapkan algoritma pengambilan sampel untuk memastikan bahwa penelusuran efisien, sambil tetap memberikan sampel yang representatif dari semua permintaan. Tingkat pengambilan sampel adalah 1 permintaan per detik dan 5 persen dari permintaan tambahan. Anda tidak dapat mengonfigurasi laju pengambilan sampel X-Ray untuk fungsi Anda.
Di X-Ray, jejak merekam informasi tentang permintaan yang diproses oleh satu atau beberapa layanan. Lambda mencatat 2 segmen per jejak, yang menciptakan dua node pada grafik layanan. Gambar berikut menyoroti dua node ini:
Node pertama di sebelah kiri mewakili layanan Lambda, yang menerima permintaan pemanggilan. Node kedua mewakili fungsi Lambda spesifik Anda. Contoh berikut menunjukkan jejak dengan dua segmen ini. Keduanya bernama fungsi saya, tetapi yang satu memiliki asal AWS::Lambda
dan yang lainnya memiliki asal usul. AWS::Lambda::Function
Jika AWS::Lambda
segmen menunjukkan kesalahan, layanan Lambda mengalami masalah. Jika AWS::Lambda::Function
segmen menunjukkan kesalahan, fungsi Anda mengalami masalah.
Contoh ini memperluas AWS::Lambda::Function
segmen untuk menunjukkan tiga subsegmennya.
catatan
AWS saat ini menerapkan perubahan pada layanan Lambda. Karena perubahan ini, Anda mungkin melihat perbedaan kecil antara struktur dan konten pesan log sistem dan segmen pelacakan yang dipancarkan oleh fungsi Lambda yang berbeda di Anda. Akun AWS
Contoh jejak yang ditunjukkan di sini menggambarkan segmen fungsi gaya lama. Perbedaan antara segmen gaya lama dan baru dijelaskan dalam paragraf berikut.
Perubahan ini akan diterapkan selama beberapa minggu mendatang, dan semua fungsi di semua Wilayah AWS kecuali China dan GovCloud wilayah akan bertransisi untuk menggunakan pesan log format baru dan segmen pelacakan.
Segmen fungsi gaya lama berisi subsegmen berikut:
-
Inisialisasi – Mewakili waktu yang dihabiskan untuk memuat fungsi dan menjalankan kode inisialisasi. Subsegmen ini hanya muncul untuk peristiwa pertama yang diproses oleh setiap instance fungsi Anda.
-
Doa - Merupakan waktu yang dihabiskan untuk menjalankan kode handler Anda.
-
Overhead - Merupakan waktu yang dihabiskan runtime Lambda untuk mempersiapkan diri untuk menangani acara berikutnya.
Segmen fungsi gaya baru tidak berisi subsegmen. Invocation
Sebagai gantinya, subsegmen pelanggan dilampirkan langsung ke segmen fungsi. Untuk informasi lebih lanjut tentang struktur segmen fungsi gaya lama dan baru, lihat. Memahami jejak X-Ray
Anda juga dapat HTTP menginstrumentasikan klien, merekam SQL kueri, dan membuat subsegmen khusus dengan anotasi dan metadata. Untuk informasi selengkapnya, lihat AWS X-Ray SDK for Node.jsdi Panduan AWS X-Ray Pengembang.
Harga
Anda dapat menggunakan penelusuran X-Ray secara gratis setiap bulan hingga batas tertentu sebagai bagian dari Tingkat AWS Gratis. Di luar ambang batas itu, X-Ray mengenakan biaya untuk penyimpanan dan pengambilan jejak. Untuk informasi selengkapnya, lihat harga AWS X-Ray
Menyimpan dependensi runtime dalam lapisan (X-Ray) SDK
Jika Anda menggunakan X-Ray SDK untuk instrumen AWS SDK klien kode fungsi Anda, paket penyebaran Anda bisa menjadi cukup besar. Untuk menghindari mengunggah dependensi runtime setiap kali Anda memperbarui kode fungsi, paketkan X-Ray di SDK lapisan Lambda.
Contoh berikut menunjukkan AWS::Serverless::LayerVersion
sumber daya yang menyimpan file AWS X-Ray SDK for Node.js.
contoh template.yml – Lapisan dependensi
Resources: function: Type: AWS::Serverless::Function Properties: CodeUri: function/. Tracing: Active
Layers: - !Ref libs
...libs: Type: AWS::Serverless::LayerVersion Properties: LayerName: blank-nodejs-lib Description: Dependencies for the blank sample app. ContentUri: lib/. CompatibleRuntimes: - nodejs16.x
Dengan konfigurasi ini, Anda memperbarui lapisan pustaka hanya jika Anda mengubah dependensi runtime Anda. Karena paket penerapan fungsi hanya berisi kode Anda, ini dapat membantu mengurangi waktu upload.
Membuat lapisan untuk dependensi memerlukan perubahan build untuk membuat arsip lapisan sebelum deployment. Untuk contoh pekerjaan, lihat contoh aplikasi blank-nodejs