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"