Skip to main content

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

ServiceURL AksesDefault Login
Prometheushttp://localhost:9090Tidak perlu login
Grafanahttp://localhost:3000admin / admin

6. Hubungkan Grafana ke Prometheus

  1. Buka Grafana Dashboard → menu kiri → Connections → Data sources
  2. Pilih Prometheus
  3. Masukkan URL: http://prometheus:9090
  4. 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

TujuanQuery
CPU Usagerate(node_cpu_seconds_total{mode!="idle"}[5m])
Memory Usagenode_memory_MemAvailable_bytes / node_memory_MemTotal_bytes * 100
Disk Usagenode_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.