Topik ini menjelaskan mengapa jumlah akumulasi pesan yang dilaporkan oleh peringatan berbeda dari yang ditampilkan di konsol.
Symptoms
Anda mungkin menemukan ketidaksesuaian antara nilai akumulasi pesan yang dilaporkan oleh peringatan dan yang ditampilkan di konsol.
Sebagai contoh, pada tab Pemantauan Prometheus di halaman detail kelompok konsumen, kartu Total Message Accumulation di bagian atas menampilkan nilai 36. Namun, grafik garis Pemantauan Prometheus di bawahnya menunjukkan bahwa akumulasi pesan sempat melonjak hingga sekitar 300 pada waktu tertentu sebelum kembali stabil. Kedua nilai tersebut sangat berbeda.
Possible causes
Cause 1
Akumulasi pesan untuk suatu partisi dihitung sebagai: offset maksimum partisi - offset konsumen partisi. Total akumulasi pesan merupakan jumlah akumulasi dari seluruh partisi.
Misalnya, pertimbangkan sebuah instans dengan m kelompok konsumen dan n topik, di mana setiap kelompok konsumen berlangganan ke semua topik. Akumulasi pesan untuk suatu kelompok konsumen dapat dihitung dengan dua metode:
-
Metode permintaan standar
Metode ini mengirim permintaan RPC terpisah untuk mendapatkan offset konsumen kelompok konsumen dan offset maksimum partisi dari topik yang berlangganan. Pendekatan ini menghasilkan setidaknya
m * n * jumlah node brokerpermintaan RPC, sehingga berdampak signifikan terhadap efisiensi pemantauan. -
Metode permintaan batch
Metode ini pertama-tama mengambil semua offset konsumen untuk seluruh kelompok konsumen dalam satu batch, lalu mengambil offset maksimum untuk seluruh partisi yang berlangganan dalam batch terpisah. Pendekatan ini mengurangi jumlah permintaan RPC dari
m * n * jumlah node brokermenjadi hanya sebanyak jumlah node broker. Namun, karena sifat Pemrosesan batch, terjadi jeda antara pengambilan offset konsumen dan offset maksimum. Selama jeda tersebut, offset maksimum suatu partisi dapat terus meningkat seiring masuknya pesan baru, sehingga menyebabkan ketidakakuratan dalam perhitungan akumulasi pesan.
Total Message Accumulation pada halaman Group Details di konsol diperoleh dengan mengirim permintaan RPC terpisah untuk mengambil offset konsumen dan offset maksimum partisi. Karena selisih waktu antara kedua permintaan tersebut sangat kecil, ketidaksesuaian dengan akumulasi pesan aktual juga minimal. Sebaliknya, akumulasi pesan untuk pemantauan diambil menggunakan metode batch, yang menciptakan jeda antara pengambilan offset konsumen dan offset maksimum partisi. Jeda ini secara tak terhindarkan menyebabkan ketidaksesuaian dalam perhitungan akumulasi, sehingga nilai peringatan akumulasi pesan bisa berbeda dari yang ditampilkan di konsol.
Cause 2
Saat konsumsi lambat dan Penggunaan disk tinggi, instans mungkin menghapus pesan sebelum sempat dikonsumsi. Hal ini dapat menyebabkan offset konsumen suatu partisi menjadi lebih kecil daripada offset minimum-nya. Apache Kafka open source dan Message Queue for Apache Kafka menangani situasi ini secara berbeda:
-
Apache Kafka open source
Secara default, sistem ini mengabaikan akumulasi pesan tersebut saat menghitung total.
-
Message Queue for Apache Kafka
Untuk membantu Anda mendeteksi offset konsumen abnormal di partisi lebih cepat, kebijakan peringatan pemantauan melaporkannya sebagai peringatan akumulasi pesan, sehingga Anda dapat menanganinya sesuai kebutuhan.
Agar Anda dapat membedakan antara partisi abnormal dan normal di konsol, Message Queue for Apache Kafka mengecualikan akumulasi pesan dari partisi abnormal dari nilai Total Message Accumulation pada halaman Group Details. Akibatnya, akumulasi pesan yang dilaporkan oleh sistem pemantauan jauh lebih besar daripada yang ditampilkan di konsol, sehingga menyebabkan ketidaksesuaian antara peringatan akumulasi pesan dan tampilan di konsol.
-
Jika Anda memutuskan untuk mengabaikan peringatan ini, Anda dapat mengatur ulang offset konsumen ke 0 di konsol. Setelah offset diatur ulang, Message Queue for Apache Kafka tidak lagi memicu peringatan akumulasi pesan untuk topik terkait dalam kelompok konsumen tersebut. Untuk informasi lebih lanjut, lihat reset consumer offsets.
-
Jika Anda perlu menonaktifkan fitur ini sementara waktu, silakan submit a ticket.
Berikut beberapa contoh yang menggambarkan perilaku ini:
-
Total akumulasi pesan di konsol tidak sesuai dengan total akumulasi pesan pada peringatan.
Pada halaman detail kelompok konsumen Kafka, pilih tab Pemantauan Prometheus. Total Message Accumulation di bagian atas menunjukkan angka 13.568, sedangkan grafik garis Total Message Accumulation di bawahnya menunjukkan bahwa akumulasi tetap stabil selama 30 menit terakhir.
-
Total akumulasi pesan di konsol mengecualikan akumulasi abnormal.
Pada halaman detail kelompok konsumen, Total Message Accumulation ditampilkan dalam kartu di bagian atas. Di tab Consumption Status, tabel menampilkan akumulasi untuk setiap topik di kolom Accumulation.
-
Detail konsumsi untuk suatu topik menunjukkan partisi dengan akumulasi abnormal, di mana offset konsumen lebih kecil daripada offset minimum.
Sebagai contoh, partisi 0 memiliki Consumer Offset sebesar 1, tetapi Min Offset-nya adalah 97.413.417.052. Nilai Accumulation ditampilkan sebagai
--dan tidak dimasukkan ke dalam total.