Prometheus

Prometheus

🧠 Konsep dan Arsitektur Prometheus

Prometheus memiliki beberapa komponen utama:

1. Prometheus Server

  • Komponen inti yang melakukan scraping (mengambil data) dari target endpoint (biasanya HTTP).
  • Menyimpan semua data metrik dalam time series database (TSDB) miliknya sendiri.

2. Exporters

  • Software atau agen yang berjalan di sistem target untuk meng-expose metrik dalam format Prometheus.
  • Contoh:
    • node_exporter → metrik server (CPU, RAM, disk, dsb)
    • blackbox_exporter → monitoring jaringan (ping, HTTP, TCP)
    • mysqld_exporter, snmp_exporter, dll

3. Push Gateway (opsional)

  • Digunakan untuk job short-lived (misalnya batch jobs), karena Prometheus biasanya menggunakan pull model.
  • Push Gateway memungkinkan job mem-push metrik ke Prometheus secara manual.

4. Alertmanager

  • Menangani notifikasi dan alert berdasarkan rule yang didefinisikan di Prometheus.
  • Bisa mengirim ke:
    • Email
    • Slack
    • Telegram
    • Ntfy
    • Webhook
    • dsb

5. Grafana

  • Bukan bagian dari Prometheus, tapi sering digunakan bersama-sama.
  • Menyediakan visualisasi (dashboard) metrik Prometheus.

📦 Cara Kerja Prometheus (Pull-based model)

  1. Prometheus dikonfigurasi untuk scrape endpoint tertentu (misalnya http://192.168.1.100:9100/metrics)
  2. Endpoint tersebut menyediakan data metrik dalam format text/plain (misalnya: node_exporter)
  3. Prometheus menyimpan metrik tersebut dalam database time-series miliknya
  4. Bisa ditampilkan di dashboard (Grafana) atau di-query dengan bahasa PromQL
  5. Jika kondisi tertentu terpenuhi (misalnya CPU > 90%), maka alert akan dikirim oleh Alertmanager
Prometheus Target
Prometheus Alert

📊 Contoh Format Data Metrik Prometheus

# HELP node_cpu_seconds_total Seconds the CPUs spent in each mode.
# TYPE node_cpu_seconds_total counter
node_cpu_seconds_total{cpu="0",mode="user"
} 2345.6
node_cpu_seconds_total{cpu="0",mode="system"} 1234.5

🔍 PromQL (Prometheus Query Language)

PromQL adalah bahasa query Prometheus untuk menampilkan atau menganalisis metrik.

Contoh:

promqlCopyEditnode_cpu_seconds_total{mode="user"}
rate(node_network_receive_bytes_total[5m])
avg by (instance) (rate(node_cpu_seconds_total[1m]))

Kelebihan Prometheus

KelebihanPenjelasan
✅ Open-source & CNCF ProjectAktif dikembangkan dan komunitas besar
✅ Pull modelAman dari target (tidak perlu agent push)
✅ TSDB internalTidak perlu database eksternal
✅ PromQLPowerful query untuk analisis
✅ Integrasi mudahDengan Grafana, Alertmanager, Docker, Kubernetes, dsb
✅ Exporter banyakBisa monitoring hampir semua hal

⚠️ Kekurangan Prometheus

KekuranganPenjelasan
❌ Bukan untuk data logTidak cocok untuk analisis log (gunakan Loki, ELK)
❌ Tidak ada long-term storage bawaanData bisa hilang jika Prometheus crash (bisa diatasi dengan Thanos atau Cortex)
❌ Push model tidak nativePerlu Push Gateway untuk job sementara

⚙️ Contoh Use Case di Homelab

  • Monitoring Proxmox dengan pve-exporter
  • Monitoring router MikroTik pakai snmp_exporter
  • Visualisasi dengan Grafana (CPU, RAM, Disk, Bandwidth)
  • Alert jika CPU over 90%, disk hampir penuh, VM mati
  • Monitoring kontainer Docker dengan cadvisor atau prometheus-node-exporter + label Docker