Tools Review

Monitoring Server dengan Grafana & Prometheus: Panduan Praktis

Monitoring Server dengan Grafana & Prometheus: Panduan Praktis

Monitoring adalah salah satu aspek yang sering diabaikan dalam self-hosting. Padahal, tanpa monitoring Anda tidak akan tahu kapan server mulai bermasalah sampai semuanya sudah down.

Setup monitoring server dengan Grafana dan Prometheus untuk self-hosting

Kenapa Monitoring Penting?

  • Detect masalah sebelum user merasakan — CPU 90%? Disk hampir penuh? Anda tahu duluan
  • Capacity planning — kapan waktunya upgrade VPS
  • Debugging — histori metric membantu cari akar masalah
  • Peace of mind — tidur nyenyak karena server diawasi 24/7

Stack Monitoring

Kita akan menggunakan:

  • Prometheus — metrics collection dan storage
  • Grafana — visualization dan alerting
  • cAdvisor — container metrics (untuk Docker)
  • Node Exporter — host metrics

Docker Compose Setup

version: '3.8'

services:
  prometheus:
    image: prom/prometheus
    ports:
      - "9090:9090"
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml
      - prometheus_data:/prometheus
    restart: unless-stopped

  grafana:
    image: grafana/grafana
    ports:
      - "3000:3000"
    environment:
      GF_SECURITY_ADMIN_PASSWORD: admin123
    volumes:
      - grafana_data:/var/lib/grafana
    restart: unless-stopped

  cadvisor:
    image: gcr.io/cadvisor/cadvisor
    volumes:
      - /:/rootfs:ro
      - /var/run:/var/run:ro
      - /sys:/sys:ro
      - /var/lib/docker/:/var/lib/docker:ro
    ports:
      - "8080:8080"
    restart: unless-stopped

  node-exporter:
    image: prom/node-exporter
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /:/rootfs:ro
    command:
      - '--path.procfs=/host/proc'
      - '--path.sysfs=/host/sys'
      - '--path.rootfs=/rootfs'
    ports:
      - "9100:9100"
    restart: unless-stopped

volumes:
  prometheus_data:
  grafana_data:

Konfigurasi Prometheus

Buat prometheus.yml:

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['localhost:9090']

  - job_name: 'node'
    static_configs:
      - targets: ['node-exporter:9100']

  - job_name: 'cadvisor'
    static_configs:
      - targets: ['cadvisor:8080']

Import Dashboard Grafana

Grafana punya ribuan dashboard gratis. Import yang populer:

  • Node Exporter Full (ID: 1860) — host monitoring lengkap
  • Docker Container Stats (ID: 893) — monitor semua container
  • Prometheus Stats (ID: 2) — monitor Prometheus itu sendiri

Alerting

Setup alert di Grafana untuk hal kritis:

  • CPU > 90% selama 5 menit
  • Disk usage > 85%
  • RAM > 80%
  • Container down

Monitoring adalah bagian penting dari keamanan server. Dengan data metric, Anda bisa detect anomali dan respond lebih cepat. Untuk stack lengkap self-hosting, baca panduan self-hosting dari nol.