Dokumen ini menjelaskan cara memantau cluster Managed Service untuk Apache Kafka guna memastikan keandalan workload Kafka Anda.
Ringkasan
Keandalan adalah kemampuan sistem untuk berfungsi dengan benar dan konsisten dari waktu ke waktu. Untuk workload berbasis Kafka, keandalan mencakup cluster Kafka itu sendiri, serta aplikasi klien yang menghasilkan dan menggunakan pesan.
Managed Service untuk Apache Kafka dirancang untuk menoleransi dan memulihkan dari banyak kegagalan umum. Misalnya, layanan ini menempatkan replika di berbagai zona untuk toleransi kesalahan, dan otomatis memulai ulang broker yang gagal. Namun, faktor lain yang memengaruhi keandalan berada di luar kontrol langsung layanan, seperti:
- Konfigurasi klien
- Beban pada cluster, termasuk beban rata-rata dan lonjakan
- Jumlah partisi dan replika
- Konfigurasi topik, seperti retensi pesan
Untuk mencapai operasi yang andal, penting untuk memantau cluster terkait parameter operasional ini dan menjaganya tetap dalam rentang yang direkomendasikan. Bagian berikut menjelaskan beberapa metrik utama yang penting untuk keandalan.
Memantau kapasitas cluster
Untuk menghindari kelebihan beban cluster, pantau sinyal berikut. Buat pemberitahuan untuk memberi tahu Anda jika nilai tersebut berada di luar rentang yang direkomendasikan untuk jangka waktu yang lama.
Penggunaan CPU. Cobalah untuk menjaga pemakaian CPU di bawah 80% di semua broker.
Penggunaan disk broker: Pastikan penggunaan disk broker tetap kurang dari 80%.
Ukuran disk. Sebagai titik awal yang aman, sebaiknya miliki setidaknya
2*(segment.bytes)per partisi per broker. Dalam praktiknya, persyaratan disk yang sebenarnya sering kali jauh lebih rendah.Secara default, file segmen ditutup dan dipindahkan ke penyimpanan jarak jauh setelah 7 hari. Biasanya, sebagian besar partisi menerima kurang dari
segment.bytesdata selama periode tersebut, yang berarti sebagian besar partisi menggunakan kurang darisegment.byteskapasitas disk. Sebelum meningkatkan ukuran disk, pantau pemakaian disk saat Anda membuat lebih banyak partisi di cluster.Jumlah partisi. Cobalah untuk mempertahankan kurang dari 4.000 partisi per broker, dan kurang dari 100.000 partisi per cluster.
Jika kapasitas cluster Anda rendah, pertimbangkan mitigasi berikut:
Tingkatkan jumlah vCPU cluster. Untuk mengetahui informasi selengkapnya, lihat Mengupdate cluster Kafka.
Tingkatkan skala cluster untuk menambahkan lebih banyak broker. Untuk mengetahui informasi tentang cara layanan menyediakan broker, lihat Penyediaan broker.
Tingkatkan ukuran disk broker. Untuk mengetahui informasi selengkapnya, lihat Mengonfigurasi ukuran disk broker.
Tabel berikut menunjukkan kueri Prometheus Query Language (PromQL) untuk metrik ini yang dapat Anda tambahkan ke dasbor Cloud Monitoring kustom.
| Sinyal | Kueri PromQL |
|---|---|
| Pemakaian CPU | rate( { "managedkafka.googleapis.com/cpu/core_usage_time", monitored_resource="managedkafka.googleapis.com/Cluster" }[${__interval}] ) / min_over_time( { "managedkafka.googleapis.com/cpu/limit", monitored_resource="managedkafka.googleapis.com/Cluster" }[${__interval}] ) |
| Penggunaan disk broker | max_over_time( { "managedkafka.googleapis.com/disk/used_bytes", monitored_resource="managedkafka.googleapis.com/Cluster" }[${__interval}] ) / min_over_time( { "managedkafka.googleapis.com/disk/limit", monitored_resource="managedkafka.googleapis.com/Cluster" }[${__interval}] ) |
| Ukuran segmen per partisi | # Assumes that segment files are 225 MiB. Check your cluster configuration. 2*225*(1024*1024) * max_over_time( { "managedkafka.googleapis.com/partitions", monitored_resource="managedkafka.googleapis.com/Cluster" }[${__interval}] ) / min_over_time( { "managedkafka.googleapis.com/disk/limit", monitored_resource="managedkafka.googleapis.com/Cluster" }[${__interval}] ) |
| Partisi per broker | max by (resource_container, location, cluster_id, broker_index) ( max_over_time( { "managedkafka.googleapis.com/partitions", monitored_resource="managedkafka.googleapis.com/Cluster" }[${__interval}] ) ) |
| Partisi per cluster | max by (resource_container, location, cluster_id) ( max_over_time( { "managedkafka.googleapis.com/partitions", monitored_resource="managedkafka.googleapis.com/Cluster" }[${__interval}] ) ) |
Memantau keseimbangan partisi di seluruh broker
Beban yang tidak merata dapat mencegah cluster Kafka melayani permintaan klien dengan benar. Jumlah partisi yang ditetapkan ke satu broker harus tetap berada dalam kisaran sekitar 10% dari jumlah partisi rata-rata per broker. Cari pencilan dalam metrik ini.
Untuk mempertahankan partisi yang seimbang, pertimbangkan untuk mengaktifkan penyeimbangan ulang otomatis saat peningkatan skala di cluster Anda.
Tabel berikut menunjukkan kueri PromQL yang dapat Anda gunakan untuk memantau ketidakseimbangan partisi.
| Sinyal | Kueri PromQL |
|---|---|
| Jumlah partisi per broker | sum by (resource_container, location, cluster_id, broker_index) ( avg_over_time( { "managedkafka.googleapis.com/partitions", monitored_resource="managedkafka.googleapis.com/Cluster" }[${__interval}] ) ) |
| Ketidakseimbangan partisi | sum by (resource_container, location, cluster_id, broker_index) ( avg_over_time( { "managedkafka.googleapis.com/partitions", monitored_resource="managedkafka.googleapis.com/Cluster" }[${__interval}] ) ) / on (resource_container, location, cluster_id) group_left avg by (resource_container, location, cluster_id) ( avg_over_time( { "managedkafka.googleapis.com/partitions", monitored_resource="managedkafka.googleapis.com/Cluster" }[${__interval}] ) ) - 1 |
Memantau replikasi partisi
Replikasi data sangat penting untuk memastikan bahwa workload Anda fault-tolerant. Dalam cluster yang responsif, setiap partisi dalam topik memiliki jumlah replika penuh, berdasarkan faktor replikasi yang dikonfigurasi topik.
Gunakan sinyal berikut untuk memantau replikasi partisi:
Di bawah replika sinkronisasi (ISR) minimum. Jika partisi memiliki ISR yang disinkronkan lebih sedikit daripada jumlah minimum yang dikonfigurasi (
min.insync.replicas), ada risiko serius kehilangan data dan ketersediaan. Biasanya, situasi ini disebabkan oleh kapasitas yang tidak memadai pada satu atau beberapa broker, atau oleh kegagalan infrastruktur.Partisi yang kurang direplikasi. Partisi kurang direplikasi jika jumlah replika yang disinkronkan berada di bawah faktor replikasi. Jika partisi tetap kurang direplikasi selama 10 menit, mungkin ada masalah dengan broker, kapasitas penyimpanan, atau hal lainnya.
Selama mulai ulang berkelanjutan, broker menjadi tidak tersedia saat dimulai ulang, sehingga menyebabkan replikasi yang kurang optimal untuk sementara. Situasi ini sudah diperkirakan dan tidak memerlukan intervensi.
Tabel berikut menunjukkan kueri PromQL yang dapat Anda gunakan untuk memantau replikasi.
| Sinyal | Kueri PromQL |
|---|---|
| Di bawah ISR minimum | max by ( resource_container, location, cluster_id ) ( max_over_time( { "managedkafka.googleapis.com/broker/under_min_isr_partitions", monitored_resource="managedkafka.googleapis.com/Cluster" }[${__interval}] ) ) |
| Replikasi kurang | max by ( resource_container, location, cluster_id ) ( min_over_time( { "managedkafka.googleapis.com/broker/under_replicated_partitions", monitored_resource="managedkafka.googleapis.com/Cluster" }[10m:${__interval}] ) ) |
Memantau kuota permintaan otorisasi
Saat klien terhubung ke cluster, otorisasi koneksi akan mengurangi kuota Cluster authenticate connection requests per minute per project per region. Semua cluster dalam project dan region menggunakan kuota ini, dan jika melebihi kuota, koneksi klien baru akan diblokir. Cobalah untuk menjaga pemakaian kuota di bawah 80%, dan buat pemberitahuan untuk memberi tahu Anda jika pemakaian tetap tinggi.
Jika pemakaian kuota tinggi, pertimbangkan mitigasi berikut:
Kurangi frekuensi klien membuat koneksi baru yang tidak diperlukan. Misalnya, konfigurasikan klien Anda untuk menggunakan backoff eksponensial pada error produksi dan konsumsi, gabungkan instance klien jika sesuai, dan gunakan kembali koneksi yang ada.
Meminta penambahan kuota. Untuk mengetahui informasi selengkapnya, baca Kuota dan batas.
Tabel berikut menunjukkan kueri PromQL yang dapat Anda gunakan untuk memantau tiga penggunaan kuota permintaan otorisasi teratas berdasarkan project dan region.
| Sinyal | Kueri PromQL |
|---|---|
| 3 penggunaan kuota permintaan otorisasi teratas berdasarkan project dan region | topk(3, sum by (project_id, location) ( rate( { "serviceruntime.googleapis.com/quota/rate/net_usage", monitored_resource="consumer_quota", service="managedkafka.googleapis.com", quota_metric="managedkafka.googleapis.com/cluster_authenticate_requests" }[${__interval}] ) ) / ( min by (project_id, location) ( min_over_time( { "serviceruntime.googleapis.com/quota/limit", monitored_resource="consumer_quota", service="managedkafka.googleapis.com", quota_metric="managedkafka.googleapis.com/cluster_authenticate_requests", limit_name="ClusterAuthPerMinutePerProjectPerRegion" }[${__interval}] ) ) / 60 ) ) |
Langkah berikutnya
- Memantau cluster Kafka
- Memantau aplikasi klien Kafka
- Merencanakan ukuran cluster Kafka
- Membuat dan mengelola dasbor kustom