Kembali ke Series Homelab dari Nol
Homelab

Monitoring Server dengan Grafana & Prometheus

Panduan monitoring homelab dengan Grafana dan Prometheus. Install node_exporter, scrape metrics, buat dashboard, dan pasang alert supaya masalah ketahuan lebih awal.

A
Alif Afriza Penulis
· · 4 menit baca
Monitoring Server dengan Grafana & Prometheus

Server homelab yang sudah jalan beberapa bulan biasanya mati pertama kali karena hal yang membosankan: disk penuh, RAM habis, atau proses yang menggantung. Monitoring tidak mencegah hal itu terjadi, tapi membuat kamu tahu sebelum semuanya berhenti bekerja.

Pilih Tool: Mengapa Grafana dan Prometheus

Pasangan Prometheus + Grafana adalah standar de-facto untuk homelab dan produksi:

  • Prometheus mengumpulkan dan menyimpan metrik sebagai time series. Ringan, pull-based, tidak perlu agent tertentu untuk server klien.
  • Grafana menampilkan metrik tersebut dalam dashboard yang bisa diatur dan berbagi akses.

Cara kerja dasarnya: tiap server menjalankan node_exporter yang mengekspos metrik lewat HTTP. Prometheus menarik (pull) metrik itu secara periodik, lalu Grafana membaca dari Prometheus untuk ditampilkan.

[Server 1: node_exporter :9100]
[Server 2: node_exporter :9100]  ->  [Prometheus :9090]  ->  [Grafana :3000]

1. Install node_exporter di Setiap Server

node_exporter adalah daemon kecil yang membuka port 9100 dan menampilkan metrik CPU, memori, disk, dan jaringan dalam format teks yang dipahami Prometheus.

# Download versi terbaru (cek halaman release resmi)
wget https://github.com/prometheus/node_exporter/releases/download/v1.8.2/node_exporter-1.8.2.linux-amd64.tar.gz
tar xzf node_exporter-1.8.2.linux-amd64.tar.gz
sudo mv node_exporter-1.8.2.linux-amd64/node_exporter /usr/local/bin/

# Jalankan sebagai service
systemctl start node_exporter

Jangan lupa buka port di firewall untuk akses dari server Prometheus saja, misalnya ufw allow from 192.168.1.10 to any port 9100.

2. Setup Prometheus

Prometheus bisa dijalankan lewat Docker, tapi pastikan storage-nya di volume agar metrik tidak ikut hilang saat container di-update.

# docker-compose.yml (prometheus + grafana)
version: "3.8"
services:
  prometheus:
    image: prom/prometheus:v2.53.0
    container_name: prometheus
    ports:
      - "9090:9090"
    volumes:
      - ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
      - prometheus-data:/prometheus
    restart: unless-stopped

  grafana:
    image: grafana/grafana:11.1.0
    container_name: grafana
    ports:
      - "3000:3000"
    volumes:
      - grafana-data:/var/lib/grafana
    environment:
      - GF_SECURITY_ADMIN_PASSWORD=replace-with-strong-password
    restart: unless-stopped

volumes:
  prometheus-data:
  grafana-data:

Lalu buat prometheus.yml. Di bagian scrape_configs kamu mendaftarkan target: Prometheus sendiri dan setiap node_exporter di jaringan.

global:
  scrape_interval: 15s

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

  - job_name: "node"
    static_configs:
      - targets:
          - "192.168.1.13:9100"
          - "192.168.1.14:9100"

3. Install Grafana dan Hubungkan ke Prometheus

Jalankan compose, tunggu sampai container sehat, lalu akses http://<server-ip>:3000. Login pertama memakai admin dan password yang sudah di-set di environment.

  1. Masuk ke Configuration > Data Sources
  2. Pilih Prometheus
  3. Isi URL dengan http://prometheus:9090 (nama service di compose)
  4. Klik Save & test
  5. Import dashboard: Dashboards > Import, masukkan ID resmi node-exporter-full (bisa dicari di grafana.com), pilih data source Prometheus

Import dashboard default sudah menampilkan CPU, RAM, disk, jaringan, dan suhu untuk semua node yang terdaftar.

4. Verifikasi Target Ter-Scrape

Metrik yang kosong biasanya bukan salah Grafana, tapi Prometheus tidak bisa menjangkau targetnya.

# Dari server tempat Prometheus jalan
curl http://localhost:9090/api/v1/targets | head

# Cek langsung satu metrik sederhana
curl http://localhost:9090/api/v1/query --data-urlencode 'query=up'

Output up bernilai 1 berarti target sehat, 0 berarti down. Prompt di sini langsung terlihat di dashboard.

5. Alert Sederhana Tanpa Alertmanager

Untuk pemberitahuan awal, kamu bisa pakai fitur Alerting bawaan Grafana dan langsung kirim ke chat atau email, tanpa perlu mempersulit dengan Alertmanager dulu.

Contoh aturan sederhana di Grafana: buat alert baru di dashboard disk usage, dengan kondisi nilai di atas 85% selama 5 menit, lalu set notification channel ke aplikasi chat atau webservice notifikasi.

Alert berfungsi kalau ada dua hal: kondisi yang jelas (nilai > ambang batas untuk durasi tertentu), dan channel yang benar-benar menyala. Test dulu dengan string flutter threshold yang sengaja dilanggar, misalnya set ambang 1% sebentar, lalu kembalikan.

6. Copy Pemantauan Opsional

  • Prometheus blackbox_exporter untuk mengecek apakah web service dan port TCP merespons.
  • Grafana Loki untuk menggabungkan log dari beberapa server dalam satu tempat.
  • Uptime Kuma sebagai alternatif ringan jika hanya butuh pengecekan URL secara periodik.

Hal yang Perlu Diperhatikan

  • Jangan ekspos Grafana/alert channel ke internet tanpa autentikasi. Dashboard homelab berisi detail jaringan yang sebaiknya privat, atau tutup dengan VPN/tunnel.
  • node_exporter bind ke 0.0.0.0:9100 secara default. Batasi akses di firewall agar hanya server Prometheus yang bisa menarik metrik.
  • Volume Prometheus dan Grafana bisa penuh kalau data dibiarkan menumpuk. Atur retention_time di Prometheus, misalnya 15 hari, dan pantau ukuran volume-nya.

Ringkasan

Monitoring yang baik adalah yang membuat kamu tahu ada masalah sebelum pengguna (atau kamu sendiri) menyadarinya. Mulai dari satu node, tambahkan scrape target baru setiap kali server baru masuk, dan pastikan alert yang terpasang pernah benar-benar teruji.

Dengan metrik-server yang terpantau, langkah berikutnya adalah mengunci pintunya: memastikan service dan akun yang jalan di homelab benar-benar aman. Lanjut ke Part 11: Hardening Security Server Homelab.

Open for Contributors

Ide kamu layak dibaca ribuan orang.

ByteNesia dibangun untuk semua orang. Kalau kamu punya pengalaman, tutorial, atau opini tentang teknologi, tulis dan bagikan lewat sini. Nama kamu akan tercantum sebagai kontributor.

Tulis apa saja: review tools, tutorial homelab, tips security, atau cerita pengalaman tech kamu.

Diskusi & Komentar