Sebagai administrator sistem ( sysadmin ) atau DevOps engineer, mengetahui kesehatan infrastruktur server secara real-time adalah kunci ...
Sebagai administrator sistem (sysadmin) atau DevOps engineer, mengetahui kesehatan infrastruktur server secara real-time adalah kunci utama dalam mencegah insiden downtime tak terduga. Menunggu keluhan pengguna sebelum mengetahui bahwa kapasitas disk server penuh atau memori RAM mengalami leak adalah pendekatan reaktif yang usang.
Kombinasi Prometheus (sebagai time-series database penarik metrik), Node Exporter (agen pengumpul metrik sistem operasi Linux), dan Grafana (antarmuka visualisasi dashboard interaktif) telah menjadi standar industri paling populer dan teruji untuk observabilitas server modern.
1. Arsitektur Komponen Monitoring Stack
Ketiga komponen ini bekerja secara modular dan hemat resource:
- Node Exporter: Berjalan langsung pada host Linux untuk mengekstrak data kernel, beban CPU per-core, konsumsi memori swap/RAM, I/O disk, serta statistik antarmuka jaringan.
- Prometheus: Melakukan scraping metrik dari endpoint Node Exporter secara periodik (misal tiap 15 detik) dan menyimpannya secara efisien ke time-series database lokal.
- Grafana: Membaca data dari Prometheus sebagai data source dan merendernya ke dalam grafik visual yang dinamis, informatif, dan mudah dipahami.
2. Langkah 1: Persiapan Struktur Direktori & Konfigurasi Prometheus
Buat folder kerja terstruktur pada server Anda:
# Buat direktori project monitoring
mkdir -p ~/monitoring-stack/prometheus
cd ~/monitoring-stack
# Buat file konfigurasi scraping prometheus.yml
nano prometheus/prometheus.yml
Isi file prometheus/prometheus.yml dengan target scraping berikut:
global:
scrape_interval: 15s
evaluation_interval: 15s
scrape_configs:
- job_name: 'prometheus'
static_configs:
- targets: ['localhost:9090']
- job_name: 'linux-node-host'
static_configs:
- targets: ['node-exporter:9100']
3. Langkah 2: Konfigurasi Terpadu Docker Compose
Buat file docker-compose.yml di dalam folder ~/monitoring-stack. Kita menyetel volume persistensi agar riwayat metrik dan konfigurasi dashboard Grafana tidak hilang saat container di-restart:
version: '3.8'
services:
prometheus:
image: prom/prometheus:latest
container_name: monitoring-prometheus
restart: unless-stopped
volumes:
- ./prometheus/prometheus.yml:/etc/prometheus/prometheus.yml:ro
- prometheus_data:/prometheus
command:
- '--config.file=/etc/prometheus/prometheus.yml'
- '--storage.tsdb.path=/prometheus'
- '--storage.tsdb.retention.time=30d'
ports:
- "127.0.0.1:9090:9090"
networks:
- monitoring-net
node-exporter:
image: prom/node-exporter:latest
container_name: monitoring-node-exporter
restart: unless-stopped
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /:/rootfs:ro
command:
- '--path.procfs=/host/proc'
- '--path.rootfs=/rootfs'
- '--path.sysfs=/host/sys'
- '--collector.filesystem.mount-points-exclude=^/(sys|proc|dev|host|etc)($$|/)'
ports:
- "127.0.0.1:9100:9100"
networks:
- monitoring-net
grafana:
image: grafana/grafana:latest
container_name: monitoring-grafana
restart: unless-stopped
environment:
- GF_SECURITY_ADMIN_USER=admin
- GF_SECURITY_ADMIN_PASSWORD=GantiPasswordKuatAnda123!
- GF_USERS_ALLOW_SIGN_UP=false
volumes:
- grafana_data:/var/lib/grafana
ports:
- "3000:3000"
networks:
- monitoring-net
volumes:
prometheus_data:
grafana_data:
networks:
monitoring-net:
driver: bridge
4. Langkah 3: Menjalankan Stack & Verifikasi Status
Nyalakan seluruh container secara daemon di background:
# Menjalankan seluruh container
docker compose up -d
# Memeriksa status operasional ketiga service
docker compose ps
Pastikan status ketiga container bernilai Up. Anda dapat menguji bahwa Prometheus berhasil melakukan scrape metrik Node Exporter dengan membuka http://127.0.0.1:9090/targets pada browser atau via curl:
curl -s http://127.0.0.1:9090/api/v1/targets | grep '"health":"up"'
5. Langkah 4: Visualisasi Dashboard Profesional di Grafana
Buka browser Anda dan akses http://IP-SERVER-ANDA:3000:
- Masuk menggunakan username
admindan password yang telah Anda tentukan. - Masuk ke menu Connections > Data Sources > Add Data Source, lalu pilih Prometheus.
- Pada kolom URL Prometheus, masukkan alamat internal jaringan Docker:
http://prometheus:9090, lalu klik Save & Test. - Untuk tampilan dashboard metrik Linux lengkap tanpa perlu membuat grafik manual satu per satu, klik Dashboards > New > Import. Masukkan ID 1860 (Node Exporter Full) lalu klik Load.
127.0.0.1. Jangan membuka port metrik mentah ini ke IP publik 0.0.0.0 karena penyerang dapat membaca rincian arsitektur hardware dan kernel server Anda tanpa autentikasi. Gunakan Nginx Reverse Proxy dengan SSL untuk mengakses Grafana (port 3000).
Kesimpulan
Membangun sistem monitoring berbasis Docker Compose memberikan fleksibilitas tinggi dan portabilitas tanpa mengotori sistem operasi induk. Dengan dashboard Grafana yang informatif, Anda kini dapat mendeteksi spike utilisasi CPU, memory leak, atau kehabisan disk secara dini sebelum berdampak pada kelancaran layanan pengguna.
COMMENTS