Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Visualisasikan pemanggilan fungsi Lambda menggunakan AWS X-Ray
Anda dapat menggunakan AWS X-Ray untuk memvisualisasikan komponen aplikasi Anda, mengidentifikasi kemacetan kinerja, dan memecahkan masalah permintaan yang mengakibatkan kesalahan. Fungsi Lambda Anda mengirimkan data jejak ke X-Ray, dan X-Ray memproses data untuk membuat peta layanan dan rangkuman jejak yang dapat dicari.
Jika Anda mengaktifkan pelacakan X-Ray di layanan yang memanggil fungsi Anda, Lambda mengirim jejak ke X-Ray secara otomatis. Layanan hulu, seperti Amazon API Gateway, atau aplikasi yang dihosting di Amazon EC2 yang diinstrumentasi dengan X-RaySDK, sampel permintaan masuk dan menambahkan header penelusuran yang memberi tahu Lambda untuk mengirim jejak atau tidak. Jejak dari produsen pesan hulu, seperti AmazonSQS, secara otomatis ditautkan ke jejak dari fungsi Lambda hilir, menciptakan end-to-end tampilan seluruh aplikasi. Untuk informasi selengkapnya, lihat Menelusuri aplikasi berbasis peristiwa di Panduan Pengembang.AWS X-Ray
catatan
Penelusuran X-Ray saat ini tidak didukung untuk fungsi Lambda dengan Amazon Managed Streaming for Apache Kafka MSK (Amazon), Apache Kafka yang dikelola sendiri, Amazon MQ dengan ActiveMQ dan RabbitMQ, atau pemetaan sumber acara Amazon DocumentDB.
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.
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
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.
Memahami jejak X-Ray
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.
Segmen yang direkam untuk layanan Lambda,AWS::Lambda
, mencakup semua langkah yang diperlukan untuk mempersiapkan lingkungan eksekusi Lambda. Ini termasuk penjadwalan microVM, membuat atau mencairkan lingkungan eksekusi dengan sumber daya yang telah Anda konfigurasikan, serta mengunduh kode fungsi Anda dan semua lapisan.
AWS::Lambda::Function
Segmen ini untuk pekerjaan yang dilakukan oleh fungsi.
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
Perubahan ini mempengaruhi subsegmen segmen fungsi. Paragraf berikut menjelaskan format lama dan baru untuk subsegmen ini.
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.
Struktur segmen Lambda gaya lama AWS X-Ray
Struktur X-Ray gaya lama untuk AWS::Lambda
segmen ini terlihat seperti berikut:
Dalam format ini, segmen fungsi memiliki subsegmen untukInitialization
,Invocation
, danOverhead
. Lambda SnapStartHanya saja, ada juga Restore
subsegmen (tidak ditampilkan pada diagram ini).
Subsegmen Initialization
merupakan fase init dari siklus hidup lingkungan eksekusi Lambda. Selama fase ini, Lambda menginisialisasi ekstensi, menginisialisasi runtime, dan menjalankan kode inisialisasi fungsi.
Subsegmen Invocation
merupakan fase invokasi tempat Lambda memanggil handler fungsi. Ini dimulai dengan pendaftaran runtime dan ekstensi serta berakhir ketika runtime siap untuk mengirim respon.
( SnapStart Hanya Lambda) Restore
Subsegmen menunjukkan waktu yang dibutuhkan Lambda untuk memulihkan snapshot, memuat runtime (JVM), dan menjalankan kait runtime apa pun. afterRestore
Proses memulihkan snapshot dapat mencakup waktu yang dihabiskan untuk aktivitas di luar microVM. Kali ini dilaporkan di Restore
subsegmen. Anda tidak dikenakan biaya untuk waktu yang dihabiskan di luar microVM untuk memulihkan snapshot.
Subsegmen Overhead
merupakan fase yang terjadi antara waktu ketika runtime mengirimkan respon dan sinyal untuk invokasi berikutnya. Selama waktu ini, runtime menyelesaikan semua tugas yang terkait dengan invokasi dan mempersiapkan untuk membekukan sandbox.
penting
Anda dapat menggunakan X-Ray SDK untuk memperluas Invocation
subsegmen dengan subsegmen tambahan untuk panggilan hilir, anotasi, dan metadata. Anda tidak dapat mengakses segmen fungsi secara langsung atau merekam pekerjaan yang dilakukan di luar lingkup invokasi handler.
Untuk informasi selengkapnya tentang fase lingkungan eksekusi Lambda, lihat. Memahami siklus hidup lingkungan eksekusi Lambda
Contoh jejak menggunakan struktur X-Ray gaya lama ditunjukkan pada diagram berikut.
Perhatikan dua segmen dalam contoh. 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.
catatan
Kadang-kadang, Anda mungkin melihat kesenjangan besar antara inisialisasi fungsi dan fase pemanggilan dalam jejak X-Ray Anda. Untuk fungsi yang menggunakan konkurensi yang disediakan, ini karena Lambda menginisialisasi instance fungsi Anda jauh sebelum pemanggilan. Untuk fungsi yang menggunakan konkurensi tanpa syarat (sesuai permintaan), Lambda dapat secara proaktif menginisialisasi instance fungsi, meskipun tidak ada pemanggilan. Secara visual, kedua kasus ini muncul sebagai celah waktu antara fase inisialisasi dan pemanggilan.
Struktur segmen Lambda gaya baru AWS X-Ray
Struktur X-Ray gaya baru untuk AWS::Lambda
segmen ini terlihat seperti berikut:
Dalam format baru ini, Init
Subsegmen mewakili fase init dari siklus hidup lingkungan eksekusi Lambda seperti sebelumnya.
Tidak ada segmen pemanggilan dalam format baru. Sebaliknya, subsegmen pelanggan dilampirkan langsung ke AWS::Lambda::Function
segmen. Segmen ini berisi metrik berikut sebagai anotasi:
-
aws.responseLatency
- waktu yang dibutuhkan untuk menjalankan fungsi -
aws.responseDuration
- waktu yang dibutuhkan untuk mentransfer respons kepada pelanggan -
aws.runtimeOverhead
- jumlah waktu tambahan runtime yang dibutuhkan untuk menyelesaikan -
aws.extensionOverhead
- jumlah waktu tambahan ekstensi yang dibutuhkan untuk menyelesaikan
Contoh jejak menggunakan struktur X-Ray gaya baru ditunjukkan pada diagram berikut.
Perhatikan dua segmen dalam contoh. 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.
Lihat topik berikut untuk pengantar khusus bahasa tertentu terkait pelacakan di Lambda:
Untuk daftar lengkap layanan yang mendukung instrumentasi aktif, lihat AWS Layanan yang didukung di Panduan AWS X-Ray Pengembang.
Izin peran eksekusi
Lambda memerlukan izin berikut untuk mengirim data jejak ke X-Ray. Tambahkan izin ke peran eksekusi fungsi Anda.
Izin ini disertakan dalam kebijakan AWSXRayDaemonWriteAccess
AWS X-Ray Daemon
Alih-alih mengirim data jejak langsung ke X-RayAPI, X-Ray SDK menggunakan proses daemon. AWS X-Ray Daemon adalah aplikasi yang berjalan di lingkungan Lambda dan mendengarkan UDP lalu lintas yang berisi segmen dan subsegmen. Ini menyangga data masuk dan menuliskannya ke X-Ray dalam batch sehingga mengurangi pemrosesan dan overhead memori yang diperlukan untuk melacak invokasi.
Runtime Lambda memungkinkan daemon hingga 3 persen memori fungsi yang dikonfigurasi atau 16 MB, mana pun yang lebih besar. Jika fungsi Anda kehabisan memori selama invokasi, runtime mengakhiri proses daemon terlebih dahulu untuk mengosongkan memori.
Proses daemon dikelola penuh oleh Lambda dan tidak dapat dikonfigurasi oleh pengguna. Semua segmen yang dihasilkan oleh invokasi fungsi direkam dalam akun yang sama dengan fungsi Lambda. Daemon tidak dapat dikonfigurasi untuk mengalihkannya ke akun lain.
Untuk informasi lebih lanjut, lihat Daemon X-Ray dalam Panduan Developer X-Ray.
Mengaktifkan penelusuran aktif dengan Lambda API
Untuk mengelola konfigurasi penelusuran dengan AWS CLI atau AWS SDK, gunakan API operasi berikut:
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 aktif 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
...