Topik ini menjelaskan metrik untuk Flink yang sepenuhnya dikelola.
Catatan
Ketidaksesuaian data antara CloudMonitor dan konsol Flink
-
Perbedaan dimensi yang ditampilkan
Konsol Flink menggunakan kueri PromQL untuk menampilkan hanya latensi maksimum. Dalam skenario komputasi real-time, latensi rata-rata dapat menyembunyikan masalah serius seperti kesenjangan data atau blokir pada partisi tunggal. Oleh karena itu, hanya latensi maksimum yang memberikan wawasan operasional yang bernilai. -
Ketidaksesuaian nilai
CloudMonitor menggunakan mekanisme pra-agregasi untuk menghitung metrik. Nilai "maksimum" di CloudMonitor mungkin sedikit berbeda dari nilai real-time di konsol Flink karena perbedaan jendela agregasi, cap waktu pengambilan sampel, atau logika perhitungan. Untuk troubleshooting, gunakan data konsol Flink sebagai sumber kebenaran.
Latensi data dan konfigurasi watermark
-
Logika perhitungan latensi
Metrik pemantauan saat ini Emit Delay dihitung berdasarkan event time, menggunakan rumus berikut:Delay = Waktu Sistem Saat Ini - Bidang waktu logis dalam catatan data (misalnya, PriceData.time)
Artinya, metrik ini mencerminkan kesegaran data, bukan kecepatan pemrosesan sistem. Metrik ini tinggi ketika data sumber sudah lama atau ketika sistem menjeda output untuk menyelaraskan watermark.
-
Rekomendasi
Skenario 1: Logika bisnis Anda bergantung pada watermark untuk keakuratan, tetapi data sumber sudah lama
-
Situasi khas:
-
Pengiriman data hulu memang tertunda (misalnya, pelaporan event lambat).
-
Anda menjalankan backfill untuk memproses data dari hari sebelumnya.
-
Logika bisnis memerlukan watermark untuk menangani event yang tidak berurutan, sehingga watermark tidak dapat dinonaktifkan.
-
-
Fenomena: Peringatan pemantauan menunjukkan latensi tinggi, tetapi kelompok konsumen Kafka tidak memiliki lag (lag ≈ 0) dan beban CPU rendah.
-
Rekomendasi:
-
Abaikan metrik latensi ini: Dalam kasus ini, delay tinggi memang diharapkan karena mencerminkan usia data. Hal ini bukan indikasi kegagalan sistem.
-
Beralih ke metrik lain: Pantau lag konsumen Kafka sebagai gantinya. Jika lag konsumen tidak terus meningkat, sistem memiliki kapasitas pemrosesan yang cukup dan tidak memerlukan intervensi.
-
Skenario 2: Anda memerlukan latensi rendah dan dapat mentolerir sedikit event tidak berurutan atau kehilangan data
-
Situasi khas:
-
Untuk aplikasi seperti dasbor layar besar atau kontrol risiko real-time, penantian akibat watermark memperlambat output.
-
Logika bisnis lebih memperhatikan kapan data diterima (waktu pemrosesan) daripada cap waktu di dalam catatan data (event time).
-
-
Fenomena: Aliran data bersifat real-time, tetapi karena watermark dikonfigurasi dengan jendela toleransi besar (misalnya, toleransi keterlambatan 10 detik), output tertunda selama 10 detik.
-
Rekomendasi:
-
Hapus atau nonaktifkan watermark: Beralihlah ke penggunaan waktu pemrosesan untuk perhitungan, atau atur ambang batas penantian watermark menjadi 0.
-
Hasil yang diharapkan: Metrik latensi akan turun secara signifikan, mendekati waktu pemrosesan aktual. Data diproses saat tiba, tanpa menunggu penyelarasan.
-
-
Karakteristik metrik
Metrik hanya mencerminkan kondisi saat ini dari suatu komponen dan tidak cukup untuk menentukan akar penyebab suatu masalah. Untuk diagnosis menyeluruh, selalu gunakan pemantau tekanan balik (backpressure monitor) UI Flink dan alat lainnya.
1. Tekanan balik operator
Gejala: Operator hilir tidak dapat memproses data cukup cepat, sehingga sumber mengurangi laju emisinya.
-
Cara mengidentifikasi: Gunakan pemantau tekanan balik UI Flink untuk mengidentifikasi masalah ini.
-
Karakteristik metrik:
-
sourceIdleTimemeningkat secara periodik. -
currentFetchEventTimeLagdancurrentEmitEventTimeLagterus meningkat. -
Kasus ekstrem: Jika suatu operator benar-benar macet,
sourceIdleTimeakan terus meningkat.
-
2. Bottleneck performa sumber
Gejala: Sumber membaca dengan kecepatan maksimum tetapi tidak dapat memenuhi permintaan pemrosesan data.
-
Cara mengidentifikasi: Tidak ada tekanan balik yang terdeteksi dalam pekerjaan.
-
Karakteristik metrik:
-
sourceIdleTimetetap pada nilai yang sangat rendah (menunjukkan sumber beroperasi pada kapasitas penuh). -
currentFetchEventTimeLagdancurrentEmitEventTimeLagmirip dan tetap tinggi.
-
3. Kesenjangan data atau partisi kosong
Gejala: Distribusi data tidak merata di seluruh partisi Kafka hulu, atau beberapa partisi kosong.
-
Cara mengidentifikasi: Bandingkan metrik di berbagai subtask sumber.
-
Karakteristik metrik:
-
sourceIdleTimeuntuk subtask sumber tertentu jauh lebih tinggi daripada yang lain, menunjukkan bahwa instance paralel ini idle.
-
4. Latensi data
Gejala: Latensi keseluruhan pekerjaan tinggi. Anda harus menentukan apakah bottleneck berasal dari sumber atau sistem eksternal.
-
Cara mengidentifikasi: Analisis waktu idle, selisih antara metrik lag, dan ukuran backlog secara kombinasi.
-
Karakteristik metrik:
-
sourceIdleTimetinggi:
Ini menunjukkan sumber idle, yang biasanya berarti laju produksi data dari sistem eksternal rendah, bukan karena Flink memproses lambat. -
Analisis selisih lag:
Bandingkan selisih antaracurrentEmitEventTimeLagdancurrentFetchEventTimeLag. Selisih ini merepresentasikan waktu yang dihabiskan data di dalam operator sumber:-
Selisih kecil (nilai metrik mendekati): Ini menunjukkan kapasitas fetch tidak mencukupi. Bottleneck biasanya disebabkan oleh bandwidth I/O jaringan atau paralelisme sumber yang tidak mencukupi.
-
Selisih besar: Ini menunjukkan kapasitas pemrosesan tidak mencukupi. Bottleneck biasanya disebabkan oleh penguraian data yang tidak efisien atau tekanan balik dari operator hilir.
-
-
pendingRecords(jika didukung oleh konektor):
Metrik ini secara langsung mencerminkan backlog eksternal. Nilai yang lebih tinggi menunjukkan backlog data yang lebih parah di sistem eksternal.
-