Mengikis metrik Prometheus dalam skala besar di Azure Monitor

Artikel ini menyediakan panduan tentang performa yang dapat diharapkan ketika metrik pengumpulan dalam skala tinggi untuk layanan terkelola Azure Monitor untuk Prometheus.

CPU dan memori

Penggunaan CPU dan memori berkorelasi dengan jumlah byte dari setiap sampel dan jumlah sampel yang diekstraksi. Tolok ukur ini didasarkan pada target default yang diekstraksi, volume metrik kustom yang diekstraksi, dan jumlah simpul, pod, dan kontainer. Angka-angka ini dimaksudkan sebagai referensi karena penggunaan masih dapat bervariasi secara signifikan tergantung pada jumlah rangkaian waktu dan byte per metrik.

Batas volume atas per pod saat ini sekitar 3-3,5 juta sampel per menit, tergantung pada jumlah byte per sampel. Batasan ini ditangani saat sharding ditambahkan di masa mendatang.

Agen terdiri dari penyebaran dengan satu replika dan DaemonSet untuk mengikis metrik. DaemonSet mengekstraksi target tingkat simpul apa pun seperti cAdvisor, kubelet, dan pengekspor simpul. Anda juga dapat mengonfigurasinya untuk mengikis target kustom apa pun di tingkat simpul dengan konfigurasi statis. Replicaset mengekstraksi segala sesuatu yang lain seperti kube-state-metrics atau pekerjaan scrape kustom yang memanfaatkan penemuan layanan.

Perbandingan antara kluster kecil dan besar untuk replika

Mengikis Target Sampel Dikirim / Menit Jumlah Simpul Jumlah Pod Prometheus-Collector Penggunaan CPU (inti) Penggunaan Memori Prometheus-Collector (byte)
target default 11,344 3 40 12.9 mc 148 Mi
target default 260,000 340 13000 1.10 c 1,70 GB
target default
+ target kustom
3.56 juta 340 13000 5.13 c 9,52 GB

Perbandingan antara kluster kecil dan besar untuk DaemonSets

Mengikis Target Sampel Terkirim / Total Menit Sampel Dikirim / Menit / Pod Jumlah Simpul Jumlah Pod Total Penggunaan CPU Prometheus-Collector (inti) Total Penggunaan Memori Prometheus-Collector (byte) Prometheus-Collector Penggunaan / Pod CPU (inti) Prometheus-Collector Penggunaan Memori / Pod (byte)
target default 9,858 3,327 3 40 41,9 mc 581 Mi 14.7 mc 189 Mi
target default 2.3 juta 14.400 340 13000 805 mc 305,34 GB 2.36 mc 898 Mi

Untuk metrik yang lebih kustom, pod tunggal berkinerja sama dengan pod replika tergantung pada volume metrik kustom.

Menjadwalkan pod replika ama-metrik pada kumpulan simpul dengan lebih banyak sumber daya

Volume metrik per pod yang besar memerlukan simpul yang cukup besar untuk dapat menangani penggunaan CPU dan memori yang diperlukan. Jika pod replika ama-metrik tidak dijadwalkan pada node atau nodepool yang memiliki sumber daya yang cukup, pod tersebut mungkin terus mendapatkan OOMKilled dan pergi ke CrashLoopBackoff. Untuk mengatasi masalah ini, jika Anda memiliki node atau nodepool pada kluster Anda yang memiliki sumber daya yang lebih tinggi (di kumpulan simpul sistem) dan ingin menjadwalkan replika pada simpul tersebut, Anda dapat menambahkan label azuremonitor/metrics.replica.preferred=true pada simpul dan pod replika akan dijadwalkan pada simpul ini. Anda juga dapat membuat kumpulan sistem tambahan, jika diperlukan, dengan simpul yang lebih besar dan dapat menambahkan label yang sama ke node atau nodepool mereka. Lebih baik juga menambahkan label ke nodepool daripada simpul sehingga simpul yang lebih baru di kumpulan yang sama juga dapat digunakan untuk penjadwalan ketika label ini berlaku untuk semua simpul di kumpulan.

kubectl label nodes <node-name> azuremonitor/metrics.replica.preferred="true"

Langkah berikutnya