· 4 min read · Tutorial

Setup Monitoring Server dengan Prometheus dan Grafana

Panduan setup monitoring server dengan Prometheus + Grafana: install Node Exporter, Prometheus, Grafana, import dashboard siap pakai, alert rules (CPU/RAM/Disk), dan notifikasi Telegram.

Kenapa Perlu Monitoring Sendiri

VPS provider biasanya memberi metrik dasar: CPU usage, traffic network, disk I/O. Tapi metrik ini tidak cukup untuk debugging aplikasi.

Kamu perlu tahu: berapa banyak request yang gagal? Berapa response time per endpoint? Kapan RAM mulai penuh dan aplikasi mulai swapping? Kapan disk usage mencapai 85%?

Prometheus + Grafana adalah stack monitoring open source yang paling banyak dipakai. Artikel ini fokus ke setup dasar: install, konfigurasi exporter, dan dashboard siap pakai.

Arsitektur


[Node Exporter] ──┐
[MySQL Exporter] ─┤──→ [Prometheus] ──→ [Grafana]
[Nginx Exporter] ─┘       (metrics DB)     (dashboard)

Exporter adalah service kecil yang membaca data dari target (server, database, web server) dan menyajikannya dalam format yang dipahami Prometheus. Prometheus menarik data dari semua exporter setiap 15 detik. Grafana membaca data dari Prometheus dan menampilkannya sebagai grafik.

Persiapan

KomponenPortFungsi
Prometheus9090Menyimpan dan memproses metrik
Node Exporter9100Metrik sistem: CPU, RAM, disk, network
Grafana3000Dashboard visualisasi

1. Install Node Exporter — Metrik Server

Node Exporter harus diinstall di setiap server yang ingin kamu monitor. Mulai dari server utama.

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/
rm -rf node_exporter-1.8.2*

Jalankan sebagai systemd service:

sudo nano /etc/systemd/system/node_exporter.service
[Unit]
Description=Node Exporter
After=network.target

[Service]
User=nobody
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now node_exporter
curl http://localhost:9100/metrics | head -20

2. Install Prometheus

wget https://github.com/prometheus/prometheus/releases/download/v2.55.0/prometheus-2.55.0.linux-amd64.tar.gz
tar xzf prometheus-2.55.0.linux-amd64.tar.gz
sudo mv prometheus-2.55.0.linux-amd64/prometheus /usr/local/bin/
sudo mv prometheus-2.55.0.linux-amd64/promtool /usr/local/bin/
sudo mkdir -p /etc/prometheus /var/lib/prometheus
sudo mv prometheus-2.55.0.linux-amd64/{consoles,console_libraries} /etc/prometheus/
rm -rf prometheus-2.55.0*

Konfigurasi /etc/prometheus/prometheus.yml:

global:
  scrape_interval: 15s
  evaluation_interval: 15s

scrape_configs:
  - job_name: 'node'
    static_configs:
      - targets: ['localhost:9100']
        labels:
          instance: 'server-utama'

Service systemd:

[Unit]
Description=Prometheus
After=network.target

[Service]
User=nobody
ExecStart=/usr/local/bin/prometheus \
  --config.file=/etc/prometheus/prometheus.yml \
  --storage.tsdb.path=/var/lib/prometheus \
  --web.console.templates=/etc/prometheus/consoles \
  --web.console.libraries=/etc/prometheus/console_libraries

[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl enable --now prometheus

Cek: buka http://ip_server:9090. Masuk ke Status > Targets, pastikan node exporter statusnya "UP".

3. Install Grafana

sudo apt-get install -y software-properties-common wget
sudo wget -q -O /usr/share/keyrings/grafana.key https://apt.grafana.com/gpg.key
echo "deb [signed-by=/usr/share/keyrings/grafana.key] https://apt.grafana.com stable main" | sudo tee /etc/apt/sources.list.d/grafana.list
sudo apt-get update
sudo apt-get install -y grafana
sudo systemctl enable --now grafana-server

Buka http://ip_server:3000. Login default: admin / admin (langsung ganti password setelah login).

Koneksi Grafana ke Prometheus

  1. Menu: Connections > Data Sources > Add data source
  2. Pilih Prometheus
  3. Isi URL: http://localhost:9090
  4. Klik Save & Test

4. Dashboard — Langsung Pakai, Tidak Perlu Bikin dari Nol

Bikin dashboard dari nol itu ribet. Grafana punya ribuan dashboard siap pakai.

Dashboard Node Exporter yang paling populer (ID: 1860):

  1. Menu: Dashboards > New > Import
  2. Masukkan ID: 1860
  3. Pilih data source Prometheus
  4. Klik Import

Kamu langsung dapat dashboard lengkap: CPU usage, RAM usage, disk I/O, network traffic, load average, uptime.

5. Alerting — Kamu Harus Tahu Sebelum User Komplain

Alert Rules di Prometheus

Buat /etc/prometheus/alert_rules.yml:

groups:
  - name: server_alerts
    rules:
      - alert: HighCPUUsage
        expr: 100 - (avg(rate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) > 80
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "CPU usage above 80% for 5 minutes"

      - alert: DiskAlmostFull
        expr: (node_filesystem_avail_bytes{mountpoint="/"} / node_filesystem_size_bytes{mountpoint="/"}) * 100 < 15
        for: 1m
        labels:
          severity: critical
        annotations:
          summary: "Disk space below 15% free"

      - alert: HighMemoryUsage
        expr: (1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100 > 90
        for: 5m
        labels:
          severity: warning
        annotations:
          summary: "Memory usage above 90%"

Tambah ke prometheus.yml:

rule_files:
  - "alert_rules.yml"

Notifikasi ke Telegram

Install Alertmanager (opsional, untuk notifikasi multi-channel). Cara cepat: set Grafana Alerting dengan Contact Point Telegram.

  1. Di Grafana: Alerting > Contact Points > New
  2. Pilih Telegram, isi Bot Token + Chat ID
  3. Buat Notification Policy — kirim semua alert ke Telegram

6. Monitoring Beberapa Server

Tambah entry di prometheus.yml untuk setiap server:

scrape_configs:
  - job_name: 'node'
    static_configs:
      - targets: ['localhost:9100']
        labels:
          instance: 'server-utama'
      - targets: ['192.168.1.11:9100']
        labels:
          instance: 'server-backend-1'
      - targets: ['192.168.1.12:9100']
        labels:
          instance: 'server-backend-2'

Pastikan firewall mengizinkan koneksi dari server Prometheus ke port 9100 di server lain. Jangan buka port 9100 ke internet.

Takeaway

Monitoring bukan barang mewah — ini tools debugging yang menghilangkan "tebak-tebakan" saat ada masalah.

Dengan Prometheus + Grafana:

  • Tahu persis kapan CPU/RAM mulai penuh — sebelum aplikasi crash
  • Bisa lihat tren: traffic naik 5% per minggu? Saatnya upgrade server
  • Alert otomatis ke Telegram — tahu masalah lebih cepat dari user
  • Dashboard historis — lihat apa yang terjadi saat incident kemarin

Waktu setup: 20 menit. Benefit: ketenangan jangka panjang.

Suka artikel seperti ini? Dukung operasional konten lewat Saweria.

Donate via Saweria

Discussion (0)

Leave a comment

No comments yet. Be the first to start the discussion!