View a markdown version of this page

Visualisasikan pemanggilan fungsi Lambda menggunakan AWS X-Ray - AWS Lambda

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 mengirim data jejak ke X-Ray, dan X-Ray memproses data untuk menghasilkan peta layanan dan ringkasan jejak yang dapat dicari.

Lambda mendukung dua mode penelusuran untuk X-Ray: dan. Active PassThrough Dengan Active penelusuran, Lambda secara otomatis membuat segmen jejak untuk pemanggilan fungsi dan mengirimkannya ke. X-Ray PassThroughmode, di sisi lain, hanya menyebarkan konteks penelusuran ke layanan hilir. Jika Anda telah mengaktifkan Active penelusuran untuk fungsi Anda, Lambda secara otomatis mengirimkan jejak X-Ray untuk permintaan sampel. Biasanya, layanan upstream, seperti Amazon API Gateway atau aplikasi yang dihosting di Amazon EC2 yang diinstrumentasi dengan SDK, memutuskan apakah permintaan X-Ray yang masuk harus dilacak, lalu menambahkan keputusan pengambilan sampel tersebut sebagai header penelusuran. Lambda menggunakan header itu untuk memutuskan mengirim jejak atau tidak. Jejak dari produsen pesan hulu, seperti Amazon SQS, secara otomatis ditautkan ke jejak dari fungsi Lambda hilir, menciptakan tampilan ujung ke ujung dari seluruh aplikasi. Untuk informasi selengkapnya, lihat Menelusuri aplikasi berbasis peristiwa di Panduan Pengembang.AWS X-Ray

catatan

X-Ray penelusuran saat ini tidak didukung untuk fungsi Lambda dengan Amazon Managed Streaming for Apache Kafka (Amazon MSK), 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
  1. Buka halaman Fungsi di konsol Lambda.

  2. Pilih fungsi.

  3. Pilih Konfigurasi dan kemudian pilih Alat Pemantauan dan operasi.

  4. Di bawah Alat pemantauan tambahan, pilih Edit.

  5. Di bawah Sinyal CloudWatch Aplikasi dan AWS X-Ray, pilih Aktifkan untuk jejak layanan Lambda.

  6. 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. Atau, tambahkan kebijakan AWSXRayDaemonWriteAccess ke peran eksekusi.

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 X-Ray pengambilan sampel untuk fungsi Anda.

Memahami X-Ray jejak

Di X-Ray, jejak mencatat 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:

Peta X-Ray layanan dengan satu fungsi.

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::FunctionSegmen 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 GovCloud dan wilayah akan bertransisi untuk menggunakan pesan log format baru dan segmen pelacakan.

Old-style AWS X-Ray Struktur segmen Lambda

X-Ray Struktur gaya lama untuk AWS::Lambda segmen ini terlihat seperti berikut:

Diagram yang menunjukkan struktur X-Ray jejak gaya lama yang berisi segmen pemanggilan

Dalam format ini, segmen fungsi memiliki subsegmen untukInitialization,Invocation, danOverhead. 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, dan menjalankan kait runtime setelah pemulihan. 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 pelaksanaan Lambda

Contoh jejak menggunakan X-Ray struktur gaya lama ditunjukkan pada diagram berikut.

Diagram yang menunjukkan contoh X-Ray jejak gaya lama yang berisi segmen pemanggilan

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 Anda. X-Ray 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.

New-style AWS X-Ray Struktur segmen Lambda

X-Ray Struktur gaya baru untuk AWS::Lambda segmen ini terlihat seperti berikut:

Diagram yang menunjukkan struktur X-Ray jejak gaya baru tanpa segmen pemanggilan

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 X-Ray struktur gaya baru ditunjukkan pada diagram berikut.

Diagram yang menunjukkan contoh X-Ray jejak gaya baru tanpa segmen pemanggilan

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 Didukung Layanan AWS dalam Panduan AWS X-Ray Pengembang.

Perilaku penelusuran default di Lambda

Jika Anda tidak mengaktifkan Active penelusuran, Lambda default PassThrough ke mode penelusuran.

Dalam PassThrough mode, Lambda meneruskan header X-Ray penelusuran ke layanan hilir, tetapi tidak mengirim jejak secara otomatis. Ini benar bahkan jika header tracing berisi keputusan untuk mengambil sampel permintaan. Jika layanan upstream tidak menyediakan header X-Ray tracing, Lambda menghasilkan header dan membuat keputusan untuk tidak mengambil sampel. Namun, Anda dapat mengirim jejak Anda sendiri dengan memanggil pustaka penelusuran dari kode fungsi Anda.

catatan

Sebelumnya, Lambda akan mengirim jejak secara otomatis ketika layanan upstream, seperti Amazon API Gateway, menambahkan header penelusuran. Dengan tidak mengirim jejak secara otomatis, Lambda memberi Anda kontrol untuk melacak fungsi yang penting bagi Anda. Jika solusi Anda bergantung pada perilaku penelusuran pasif ini, beralihlah ke Active penelusuran.

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 terkelola AWSXRayDaemonWriteAccess.

Mengaktifkan penelusuran Aktif dengan API Lambda

Untuk mengelola konfigurasi penelusuran dengan AWS CLI atau AWS SDK, gunakan operasi API 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 CloudFormation

Untuk mengaktifkan penelusuran pada AWS::Lambda::Function sumber daya dalam CloudFormation templat, gunakan TracingConfig properti.

contoh fungsi-inline.yml. — Konfigurasi penelusuran
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 penelusuran
Resources: function: Type: AWS::Serverless::Function Properties: Tracing: Active ...