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.
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.