Prometheus dan Grafana
Prometheus adalah open-source monitoring system dan time series database yang digunakan untuk mengumpulkan metrik dari sistem, aplikasi, atau service dalam bentuk time series data (data dengan cap waktu).
Prometheus sangat populer di dunia DevOps karena:
- Mudah diintegrasikan dengan banyak sistem (Node Exporter, cAdvisor, Kubernetes, dsb)
- Menggunakan bahasa query sendiri bernama PromQL
- Cocok untuk memantau performa aplikasi dan infrastruktur
Fitur utama Prometheus
- Pull model: Prometheus menarik (scrape) data dari target.
- Time-series database: menyimpan data berdasarkan waktu.
- Alerting system: bisa terintegrasi dengan Alertmanager.
- Integrasi luas: mendukung Docker, Kubernetes, dan lain-lain.
Apa itu Grafana?
Grafana adalah open-source data visualization tool yang digunakan untuk membuat dashboard interaktif dan memvisualisasikan data dari berbagai sumber seperti:
- Prometheus
- InfluxDB
- Elasticsearch
- MySQL, PostgreSQL, dsb
Dengan Grafana, data metrik yang dikumpulkan Prometheus bisa divisualisasikan dalam bentuk:
- Grafik
- Tabel
- Gauge
- Heatmap
- dan banyak lagi
Arsitektur Singkat Prometheus + Grafana
[Server / Aplikasi / Container]
│
▼
[Exporter] (Node Exporter / cAdvisor)
│
▼
[Prometheus Server] ←→ [Alertmanager]
│
▼
[Grafana] → Dashboard Visualisasi
Langkah Setup Prometheus dan Grafana (Docker)
1. Buat file docker-compose.yml
version: "3.8"
services:
prometheus:
image: prom/prometheus:latest
container_name: prometheus
volumes:
- ./prometheus.yml:/etc/prometheus/prometheus.yml
ports:
- "9090:9090"
restart: unless-stopped
grafana:
image: grafana/grafana:latest
container_name: grafana
ports:
- "3000:3000"
depends_on:
- prometheus
restart: unless-stopped
2. Buat file konfigurasi prometheus.yml
global:
scrape_interval: 5s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'node_exporter'
static_configs:
- targets: ['node_exporter:9100']
3. Tambahkan Node Exporter (opsional tapi disarankan)
Tambahkan ke docker-compose.yml di atas:
node_exporter:
image: prom/node-exporter:latest
container_name: node_exporter
ports:
- "9100:9100"
restart: unless-stopped
4. Jalankan semua service
docker-compose up -d
Cek container berjalan:
docker ps
5. Akses dashboard
| Service | URL Akses | Default Login |
|---|---|---|
| Prometheus | http://localhost:9090 | Tidak perlu login |
| Grafana | http://localhost:3000 | admin / admin |
6. Hubungkan Grafana ke Prometheus
- Buka Grafana Dashboard → menu kiri → Connections → Data sources
- Pilih Prometheus
- Masukkan URL:
http://prometheus:9090 - Klik Save & Test
7. Tambah Dashboard
Setelah koneksi berhasil:
- Klik Create → Import Dashboard
- Bisa gunakan template dari Grafana Dashboard Library
- Contoh ID untuk Node Exporter Full Dashboard:
1860
Contoh Query PromQL
| Tujuan | Query |
|---|---|
| CPU Usage | rate(node_cpu_seconds_total{mode!="idle"}[5m]) |
| Memory Usage | node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100 |
| Disk Usage | node_filesystem_avail_bytes / node_filesystem_size_bytes * 100 |
Tips Tambahan
- Gunakan volume agar data Prometheus & Grafana tidak hilang saat container restart.
- Gunakan alerting rule di Prometheus untuk peringatan otomatis.
- Gunakan reverse proxy seperti Nginx jika ingin diakses publik dengan domain.