

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
<a name="services-xray"></a>

Anda dapat menggunakannya AWS X-Ray untuk memvisualisasikan komponen aplikasi Anda, mengidentifikasi hambatan kinerja, dan memecahkan masalah permintaan yang mengakibatkan kesalahan. Fungsi Lambda Anda mengirim data jejak ke X-Ray, dan mem X-Ray proses data untuk menghasilkan peta layanan dan ringkasan jejak yang dapat dicari.

Lambda mendukung dua mode pelacakan untuk X-Ray: `Active` dan`PassThrough`. Dengan pen `Active` elusuran, Lambda secara otomatis membuat segmen jejak untuk pemanggilan fungsi dan mengirimkannya ke. X-Ray `PassThrough`mode, di sisi lain, hanya menyebarkan konteks pelacakan ke layanan hilir.

Jika Anda telah mengaktifkan pel `Active` acakan untuk fungsi Anda, Lambda secara otomatis mengirimkan jejak ke X-Ray permintaan sampel. Biasanya, layanan upstream, seperti Amazon API Gateway atau aplikasi yang dihosting di Amazon EC2 yang diinstrumentasikan dengan X-Ray SDK, memutuskan apakah permintaan masuk harus dilacak, kemudian menambahkan keputusan pengambilan sampel tersebut sebagai header pelacakan. Lambda menggunakan header itu untuk memutuskan untuk 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 Men [ elusuri aplikasi berbasis peristiwa ](https://docs.aws.amazon.com/xray/latest/devguide/xray-tracelinking.html) di Panduan Peng *AWS X-Ray embang. *

**catatan**  
X-Ray pelacakan saat ini tidak didukung untuk fungsi Lambda dengan Amazon Managed Streaming untuk Apache Kafka (Amazon MSK), Apache Kafka yang dikelola sendiri, Amazon MQ dengan ActiveMQ dan RabbitMQ, atau pemetaan sumber peristiwa Amazon DocumentDB.

Untuk mengaktifkan pelacakan aktif pada fungsi Lambda Anda dengan konsol, ikuti langkah-langkah berikut:

**Untuk mengaktifkan pelacakan aktif**

1. Buka [halaman Fungsi](https://console.aws.amazon.com/lambda/home#/functions) di konsol Lambda.

1. Pilih fungsi.

1. Pilih ** Konfigurasi ** dan kemudian pilih Alat ** Pemantauan dan operasi**.

1. Di bawah ** Alat pemantauan tambahan**, pilih ** Edit**.

1. Di bawah ** CloudWatch Sinyal Aplikasi dan AWS X-Ray**, pilih ** Aktifkan ** untuk pelac ** akan layanan Lambda. **

1. Pilih **Simpan**.

Fungsi Anda memerlukan izin untuk mengunggah data jejak ke X-Ray. Saat Anda mengaktifkan pelacakan di konsol Lambda, Lambda menambahkan izin yang diperlukan ke peran [ eksekusi fungsi Anda. ](lambda-intro-execution-role.md) Atau, tambahkan kebijakan [AWSXRayDaemonWriteAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSXRayDaemonWriteAccess) ke peran eksekusi.

X-Ray tidak melacak semua permintaan ke aplikasi Anda. X-Ray menerapkan algoritma sampling untuk memastikan bahwa pelacakan 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 la X-Ray ju pengambilan sampel untuk fungsi Anda.

## Memahami X-Ray jejak
<a name="services-xray-traces"></a>

Dalam X-Ray, * jejak * mencatat informasi tentang permintaan yang diproses oleh satu atau lebih * layanan*. Lambda merekam 2 segmen per jejak, yang membuat dua node pada grafik layanan. Gambar berikut menyoroti dua node ini:

![Peta X-Ray layanan dengan fungsi tunggal.](https://docs.aws.amazon.com/id_id/lambda/latest/dg/images/xray-servicemap-function.png)


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 membuka pembekuan 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 jejak 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 beralih 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 terlihat seperti berikut:

![Diagram yang menunjukkan struktur X-Ray jejak gaya lama yang berisi segmen pemanggilan.](https://docs.aws.amazon.com/id_id/lambda/latest/dg/images/V2_sandbox_images/v1_XRay_structure.png)


Dalam format ini, segmen fungsi memiliki subsegmen untuk`Initialization`,`Invocation`, dan`Overhead`. Hanya [SnapStart](snapstart.md) saja, ada juga `Restore` subsegmen (tidak ditunjukkan 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.

(Hanya Lambda SnapStart ) `Restore` Subsegmen menunjukkan waktu yang dibutuhkan Lambda untuk memulihkan snapshot, memuat runtime, dan menjalankan kait runtime setelah pemulihan. [Terapkan kode sebelum atau sesudah snapshot fungsi Lambda](snapstart-runtime-hooks.md) 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](lambda-runtime-environment.md).

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

![Diagram menunjukkan contoh X-Ray jejak gaya lama yang berisi segmen pemanggilan.](https://docs.aws.amazon.com/id_id/lambda/latest/dg/images/V2_sandbox_images/my-function-2-v1.png)


Perhatikan dua segmen dalam contoh. Keduanya ** dinamai fungsi ** saya, tetapi yang satu memiliki asal `AWS::Lambda` dan yang lainnya memiliki asal dari. `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 fase inisialisasi fungsi dan pemanggilan di jejak Anda X-Ray . Untuk fungsi yang menggunakan [ konkurensi yang disediakan](provisioned-concurrency.md), ini karena Lambda menginisialisasi instance fungsi Anda jauh sebelum pemanggilan. Untuk fungsi [ yang menggunakan konkurensi tanpa syarat (sesuai permintaan)](lambda-concurrency.md), Lambda mungkin secara proaktif menginisialisasi instance fungsi, bahkan jika tidak ada pemanggilan. Secara visual, kedua kasus ini muncul sebagai kesenjangan waktu antara fase inisialisasi dan pemanggilan.

**New-style AWS X-Ray Struktur segmen lambda**  
 X-Ray Struktur gaya baru untuk `AWS::Lambda` segmen terlihat seperti berikut:

![Diagram yang menunjukkan struktur X-Ray jejak gaya baru tanpa segmen pemanggilan.](https://docs.aws.amazon.com/id_id/lambda/latest/dg/images/V2_sandbox_images/v2_XRay_structure.png)


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 waktu yang dibutuhkan runtime untuk menyelesaikannya
+ `aws.extensionOverhead`- jumlah waktu tambahan ekstensi yang dibutuhkan untuk menyelesaikan

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

![Diagram menunjukkan contoh X-Ray jejak gaya baru tanpa segmen pemanggilan.](https://docs.aws.amazon.com/id_id/lambda/latest/dg/images/V2_sandbox_images/my-function-2-v2.png)


Perhatikan dua segmen dalam contoh. Keduanya ** dinamai fungsi ** saya, tetapi yang satu memiliki asal `AWS::Lambda` dan yang lainnya memiliki asal dari. `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:
+ [Instrumentasi Node.js kode di AWS Lambda](nodejs-tracing.md)
+ [Instrumentasi kode Python di AWS Lambda](python-tracing.md)
+ [Instrumentasi kode Ruby di AWS Lambda](ruby-tracing.md)
+ [Instrumentasi kode Java di AWS Lambda](java-tracing.md)
+ [Instrumentasi kode Go di AWS Lambda](golang-tracing.md)
+ [Instrumentasi kode C \# di AWS Lambda](csharp-tracing.md)

Untuk daftar lengkap layanan yang mendukung instrumentasi aktif, lihat Di [ dukung Layanan AWS](https://docs.aws.amazon.com/xray/latest/devguide/xray-usage.html#xray-usage-codechanges) di Panduan Peng AWS X-Ray embang.

## Perilaku penelusuran default di Lambda
<a name="services-xray-default"></a>

Jika Anda tidak mengaktifkan pel `Active` acakan, Lambda akan menggunakan mode pel `PassThrough` acakan secara default.

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

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

## Izin peran eksekusi
<a name="services-xray-permissions"></a>

Lambda memerlukan izin berikut untuk mengirim data jejak ke X-Ray. Tambahkan izin ke [peran eksekusi](lambda-intro-execution-role.md) fungsi Anda.
+ [sinar-X: PutTraceSegments ](https://docs.aws.amazon.com/xray/latest/api/API_PutTraceSegments.html)
+ [sinar-X: PutTelemetryRecords ](https://docs.aws.amazon.com/xray/latest/api/API_PutTelemetryRecords.html)

Izin ini disertakan dalam kebijakan terkelola [AWSXRayDaemonWriteAccess](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AWSXRayDaemonWriteAccess).

## Mengaktifkan `pel` acakan Aktif dengan API Lambda
<a name="services-xray-api"></a>

Untuk mengelola konfigurasi pelacakan dengan AWS CLI atau AWS SDK, gunakan operasi API berikut:
+ [UpdateFunctionConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionConfiguration.html)
+ [GetFunctionConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_GetFunctionConfiguration.html)
+ [CreateFunction](https://docs.aws.amazon.com/lambda/latest/api/API_CreateFunction.html)

Per AWS CLI intah contoh berikut memungkinkan pelacakan aktif pada fungsi bernama ** my-function**.

```
aws lambda update-function-configuration --function-name my-function \
--tracing-config Mode=Active
```

Mode pelacakan adalah bagian dari konfigurasi khusus versi saat Anda menerbitkan versi fungsi Anda. Anda tidak dapat mengubah mode pelacakan pada versi yang telah diterbitkan.

## Mengaktifkan pen `elusuran` aktif dengan CloudFormation
<a name="services-xray-cloudformation"></a>

Untuk mengaktifkan pelacakan pada `AWS::Lambda::Function` sumber daya dalam CloudFormation template, gunakan `TracingConfig` properti.

**Example [fungsi-inline.yml](https://github.com/awsdocs/aws-lambda-developer-guide/blob/master/templates/function-inline.yml) — Konfigurasi penelusuran**  

```
Resources:
  function:
    Type: [AWS::Lambda::Function](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html)
    Properties:
      TracingConfig:
        Mode: Active
      ...
```

Untuk `AWS::Serverless::Function` sumber daya AWS Serverless Application Model (AWS SAM), gunakan `Tracing` properti.

**Example [template.yml](https://github.com/awsdocs/aws-lambda-developer-guide/tree/main/sample-apps/blank-nodejs/template.yml) — Konfigurasi penelusuran**  

```
Resources:
  function:
    Type: [AWS::Serverless::Function](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-function.html)
    Properties:
      Tracing: Active
      ...
```