Cara Mengambil Data Monitoring Kubernetes (Latency, CPU, Memory) dengan Prometheus & Grafana

Cara Mengambil Data Monitoring Kubernetes (Latency, CPU, Memory) dengan Prometheus & Grafana

Pengantar

Dalam dunia Kubernetes, monitoring bukan lagi sekadar tambahan melainkan kebutuhan utama, karena ketika aplikasi sudah berjalan di dalam cluster kita perlu memastikan performanya tetap stabil, mendeteksi adanya bottleneck, serta memantau penggunaan resource seperti CPU, memori, dan latency; di sinilah peran Prometheus dan Grafana menjadi sangat penting sebagai kombinasi populer untuk monitoring modern, di mana Prometheus bertugas mengumpulkan dan menyimpan data metrik sementara Grafana menampilkan data tersebut dalam bentuk dashboard visual yang mudah dipahami, sehingga dengan memahami cara mengambil data monitoring Kubernetes (seperti latency, CPU, dan memori) kita dapat mengidentifikasi masalah performa lebih cepat, mengoptimalkan penggunaan resource cluster, meningkatkan reliability aplikasi, dan pada akhirnya membangun sistem yang lebih scalable, dan artikel ini akan membahas langkah-langkah praktis yang bisa langsung kamu terapkan.

Apa Itu Monitoring di Kubernetes?

Monitoring Kubernetes adalah proses mengumpulkan dan menganalisis data dari cluster, seperti:

  • Penggunaan CPU dan memory
  • Latency request aplikasi
  • Status pod dan node
  • Traffic jaringan

Tanpa monitoring, kamu hanya “menebak” kondisi sistem. Dengan monitoring, kamu punya data nyata untuk mengambil keputusan.

Arsitektur Monitoring dengan Prometheus & Grafana

Secara sederhana, alurnya seperti ini:

  1. Kubernetes mengirim metrik
  2. Prometheus melakukan scraping data
  3. Data disimpan di Prometheus
  4. Grafana membaca data dari Prometheus
  5. Dashboard ditampilkan ke user

Komponen penting:

  • kube state metrics : info status resource Kubernetes
  • node exporter : metrik node (CPU, memory, disk)
  • cAdvisor : metrik container
  • Prometheus Server
  • Grafana

Cara Mengambil Data CPU Kubernetes

  1. Query CPU Usage Pod

    Untuk melihat penggunaan CPU pada setiap pod di namespace default, gunakan query berikut di Prometheus:

    sum(rate(container_cpu_usage_seconds_total{namespace="default"}[5m])) by (pod)

    Penjelasan:

    • container_cpu_usage_seconds_total merupakan metrik total penggunaan CPU container
    • rate() digunakan untuk menghitung rata-rata penggunaan CPU per detik
    • [5m] berarti data dihitung berdasarkan 5 menit terakhir
    • sum by (pod) digunakan untuk mengelompokkan total penggunaan CPU berdasarkan nama pod
    • Query ini sangat berguna untuk mengetahui pod mana yang menggunakan resource CPU paling tinggi
    Keterangan:
    Semakin tinggi nilai CPU usage, semakin besar penggunaan resource CPU pada pod tersebut.
  2. Query CPU Usage Node

    Untuk melihat penggunaan CPU pada setiap node Kubernetes, gunakan query berikut:

    sum(rate(node_cpu_seconds_total{mode!="idle"}[5m])) by (instance)

    Penjelasan:

    • node_cpu_seconds_total merupakan metrik penggunaan CPU pada node
    • mode!="idle" berarti hanya menghitung CPU aktif dan mengabaikan CPU idle
    • rate() digunakan untuk menghitung rata-rata penggunaan CPU dalam periode tertentu
    • sum by (instance) mengelompokkan hasil berdasarkan node atau instance

    Query ini menghitung total penggunaan CPU aktif pada setiap node Kubernetes.

    Keterangan:
    Monitoring CPU node penting untuk memastikan tidak terjadi overload pada server Kubernetes.
  3. Query Memory Usage Pod

    Untuk melihat penggunaan memory pada setiap container atau pod, gunakan query berikut:

    container_memory_usage_bytes{namespace="default"}

    Penjelasan:

    • container_memory_usage_bytes digunakan untuk melihat total memory yang digunakan container
    • namespace="default" berarti hanya menampilkan data dari namespace default
    • Nilai yang muncul menggunakan satuan bytes
    Keterangan:
    Query ini membantu memantau penggunaan memory container agar tidak terjadi penggunaan resource berlebihan.
  4. Query Persentase Penggunaan Memory

    Untuk melihat persentase penggunaan memory dibanding limit container, gunakan query berikut:

    (container_memory_usage_bytes / container_spec_memory_limit_bytes) * 100

    Penjelasan:

    • container_memory_usage_bytes menunjukkan memory yang sedang digunakan
    • container_spec_memory_limit_bytes menunjukkan batas maksimum memory container
    • * 100 digunakan untuk mengubah hasil menjadi persentase
    Keterangan:
    Query ini berguna untuk mengetahui container yang hampir mencapai batas memory sehingga dapat mencegah terjadinya OOMKilled atau crash aplikasi.
  5. Query Latency Request

    Gunakan query berikut untuk melihat latency aplikasi:

    histogram_quantile(0.95,
    sum(rate(http_request_duration_seconds_bucket[5m])) by (le))

    Penjelasan:

    • histogram_quantile(0.95) digunakan untuk menghitung latency P95 atau 95% request tercepat
    • http_request_duration_seconds_bucket merupakan metrik histogram durasi request HTTP
    • rate() digunakan untuk menghitung rata-rata request dalam periode tertentu
    • [5m] berarti data diambil dari 5 menit terakhir
    • by (le) digunakan untuk mengelompokkan bucket histogram
    Keterangan:
    Latency digunakan untuk mengukur seberapa cepat aplikasi merespon request dari user. Semakin kecil nilai latency, semakin baik performa aplikasi.

Mengakses Grafana

Setelah Prometheus dan Grafana berhasil diinstall, langkah berikutnya adalah mengakses dashboard Grafana.
Jika menggunakan Ingress dan subdomain:

http://grafana.domainku.com
Catatan :
Sesuaikan dengan ingress dan subdomain yang telah dibuat

Login Grafana

  1. Username default Grafana:
    admin
  2. Untuk melihat password login Grafana, jalankan perintah berikut:
    kubectl get secret monitoring-grafana -n monitoring \
    -o jsonpath="{.data.admin-password}" | base64 --decode ; echo
Keterangan:
Perintah di atas digunakan untuk mengambil password admin Grafana dari Kubernetes Secret, kemudian melakukan decode agar password dapat dibaca dalam bentuk teks biasa.

Menambahkan Prometheus Sebagai Data Source

Biasanya pada kube-prometheus-stack, Prometheus sudah otomatis terhubung ke Grafana. Namun jika belum muncul, kita bisa menambahkannya secara manual.

  1. Masuk ke Menu Settings

    Buka dashboard Grafana kemudian masuk ke menu:

    Connections > Data Sources
  2. Tambah Data Source Baru

    Klik tombol berikut:

    Add new data source

    Kemudian pilih:

    Prometheus
  3. Isi URL Prometheus

    Masukkan URL berikut pada bagian URL:

    http://monitoring-kube-prometheus-prometheus.monitoring.svc:9090
  4. Simpan Konfigurasi

    Klik tombol berikut:

    Save & Test

    Jika konfigurasi berhasil, akan muncul notifikasi:

    Data source is working
Keterangan:
Langkah ini digunakan untuk menghubungkan Grafana dengan Prometheus agar data monitoring Kubernetes seperti CPU, memory, pod, dan node dapat ditampilkan dalam bentuk dashboard visual.

Kesimpulan

Prometheus dan Grafana merupakan kombinasi monitoring yang sangat populer pada Kubernetes modern karena mampu memberikan informasi performa cluster secara real-time. Dengan monitoring CPU, memory, dan latency, administrator dapat mendeteksi masalah lebih cepat, memantau performa aplikasi, mengoptimalkan penggunaan resource, serta menjaga kestabilan cluster Kubernetes. Selain itu, penggunaan Grafana membuat data monitoring lebih mudah dipahami melalui dashboard visual yang interaktif.


Artikel Lain

WhatsApp Kami

Support : +6282138153600

Finance : +6285191239466