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 mengkorelasikan peristiwa log terkait di berbagai sumber seperti grup log menggunakan kunci yang umum di seluruh mereka seperti pencocokan pengidentifikasi permintaan atau transaksi. IDs

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 dengan.

  • <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 bergabung. Bidang harus ada di kedua sumber data.

  • type=<join_type>(opsional) - Menentukan jenis bergabung. 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 menggabungkan log akses API Gateway dengan log fungsi Lambda untuk menghubungkan permintaan yang masuk dengan pemrosesan backend mereka. Ini berguna untuk memecahkan masalah alur end-to-end permintaan 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

Kueri ini:

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

  2. Bergabung dengan log fungsi Lambda menggunakan bidang requestId 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: Lacak 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)

Kueri 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 bidang bersama transactionId

  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 acara pembayaran yang sesuai, yang dapat menunjukkan kegagalan sistem.

Perilaku

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

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

  • Pencocokan dilakukan dengan menggunakan perbandingan kesetaraan di bidang gabungan.

  • Untuk gabungan kiri, catatan tak tertandingi dari sumber data primer 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 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