View a markdown version of this page

join - CloudWatch Log Amazon

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

join

Menggabungkan peristiwa log dari grup log sumber dengan peristiwa dari grup log lain atau hasil kueri berdasarkan bidang yang cocok.

Gunakan join perintah untuk menghubungkan peristiwa log terkait di berbagai sumber seperti grup log menggunakan kunci yang umum di dalamnya seperti pencocokan pengidentifikasi permintaan atau ID transaksi.

Sintaks

join type=<join_type> left=<left_alias> right=<right_alias> where <left_alias>.<field>=<right_alias>.<field> (SOURCE <right_log_group>)
Parameter

  • <right_log_group>— Sumber data sekunder untuk bergabung.

  • <left_alias>dan <right_alias> — Alias untuk membedakan bidang dari sumber data kiri (primer) dan kanan (sekunder).

  • where <field>— Menentukan bidang yang digunakan sebagai kunci gabungan. Bidang harus ada di kedua sumber data.

  • type=<join_type>(opsional) — Menentukan jenis gabungan. Nilai yang valid adalah:

    • inner(default) - Mengembalikan hanya catatan yang cocok

    • left- Mengembalikan semua catatan dari sumber data primer dan catatan yang cocok dari sumber data sekunder

Contoh

contoh Contoh 1: Korelasikan permintaan API Gateway dengan log eksekusi Lambda

Contoh ini menunjukkan cara bergabung dengan log akses API Gateway dengan log fungsi Lambda untuk menghubungkan permintaan masuk dengan pemrosesan backend mereka. Ini berguna untuk memecahkan masalah alur permintaan ujung ke ujung dan mengidentifikasi pemanggilan Lambda mana yang sesuai dengan permintaan API tertentu.

filter status >= 500 | join type=inner left=api right=lambda where api.requestId=lambda.requestId (SOURCE '/aws/lambda/my-function') | fields api.requestId, api.status, api.latency, lambda.duration, lambda.memoryUsed | sort api.latency desc

Permintaan ini:

  1. Kueri log akses API Gateway dan filter untuk kesalahan server (status >= 500)

  2. Bergabung dengan log fungsi Lambda menggunakan requestId bidang yang muncul di kedua sumber log

  3. Menggunakan alias (apidanlambda) untuk membedakan bidang dari setiap sumber

  4. Mengembalikan informasi gabungan yang menunjukkan latensi API bersama durasi eksekusi Lambda dan penggunaan memori

  5. Mengurutkan hasil berdasarkan latensi API untuk mengidentifikasi permintaan paling lambat

contoh Contoh 2: Melacak transaksi terdistribusi di seluruh layanan mikro

Saat men-debug masalah dalam arsitektur layanan mikro, Anda sering perlu melacak transaksi di beberapa layanan. Contoh ini menunjukkan cara menggabungkan log dari dua layanan berbeda menggunakan ID transaksi umum.

filter eventType = "ORDER_CREATED" | join type=left left=order right=payment where order.transactionId=payment.transactionId (SOURCE '/aws/lambda/payment-service') | filter payment.eventType = "PAYMENT_PROCESSED" or !ispresent(payment.eventType) | fields order.transactionId, order.orderId, order.customerId, payment.paymentStatus, payment.amount | filter payment.paymentStatus != "SUCCESS" or !ispresent(payment.paymentStatus)

Permintaan ini:

  1. Dimulai dengan acara pembuatan pesanan dari layanan pesanan

  2. Menggunakan a left join untuk memasukkan semua pesanan, bahkan yang tidak memiliki catatan pembayaran yang cocok

  3. Bergabung dengan acara pemrosesan pembayaran menggunakan transactionId bidang bersama

  4. Memfilter hasil akhir untuk hanya menampilkan pesanan dengan pembayaran gagal atau catatan pembayaran yang hilang

Gabungan kiri penting di sini karena memastikan Anda melihat pesanan yang dibuat tetapi tidak pernah memiliki peristiwa pembayaran yang sesuai, yang dapat mengindikasikan kegagalan sistem.

Perilaku

  • Sumber data utama (sisi kiri) diproses terlebih dahulu.

  • Sumber data sekunder dievaluasi dan dicocokkan menggunakan kunci gabungan yang ditentukan.

  • Pencocokan dilakukan menggunakan perbandingan kesetaraan pada bidang gabungan.

  • Untuk gabungan kiri, catatan yang tidak cocok dari sumber data utama dipertahankan dengan nilai nol untuk bidang sekunder.

Catatan dan batasan

  • Hanya kondisi kesetaraan (=) yang didukung.

  • Hanya satu perintah join yang didukung per kueri.

  • Kunci gabungan harus ada di kedua sumber data dan tipe yang kompatibel.

  • Kueri yang menggunakan join dapat memindai lebih banyak data dan menimbulkan biaya yang lebih tinggi.

  • Jumlah nilai kunci unik dalam sumber data sekunder dibatasi hingga 50.000 untuk memastikan kinerja kueri.

  • Subquery di sisi kanan join tidak didukung.

Perintah-perintah terkait