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:
- 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)
- Prometheus dikonfigurasi untuk scrape endpoint tertentu (misalnya
http://192.168.1.100:9100/metrics
) - Endpoint tersebut menyediakan data metrik dalam format text/plain (misalnya:
node_exporter
) - Prometheus menyimpan metrik tersebut dalam database time-series miliknya
- Bisa ditampilkan di dashboard (Grafana) atau di-query dengan bahasa PromQL
- Jika kondisi tertentu terpenuhi (misalnya CPU > 90%), maka alert akan dikirim oleh Alertmanager


📊 Contoh Format Data Metrik Prometheus
# HELP node_cpu_seconds_total Seconds the CPUs spent in each mode.
} 2345.6
# TYPE node_cpu_seconds_total counter
node_cpu_seconds_total{cpu="0",mode="user"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
Kelebihan | Penjelasan |
---|---|
✅ Open-source & CNCF Project | Aktif dikembangkan dan komunitas besar |
✅ Pull model | Aman dari target (tidak perlu agent push) |
✅ TSDB internal | Tidak perlu database eksternal |
✅ PromQL | Powerful query untuk analisis |
✅ Integrasi mudah | Dengan Grafana, Alertmanager, Docker, Kubernetes, dsb |
✅ Exporter banyak | Bisa monitoring hampir semua hal |
⚠️ Kekurangan Prometheus
Kekurangan | Penjelasan |
---|---|
❌ Bukan untuk data log | Tidak cocok untuk analisis log (gunakan Loki, ELK) |
❌ Tidak ada long-term storage bawaan | Data bisa hilang jika Prometheus crash (bisa diatasi dengan Thanos atau Cortex) |
❌ Push model tidak native | Perlu 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
atauprometheus-node-exporter
+ label Docker