Monitoring Server dengan Netdata dan Grafana

Memantau kondisi server secara visual adalah keterampilan penting bagi setiap administrator. Tanpa monitoring, Anda tidak akan tahu apakah server Anda sehat atau sedang bermasalah sampai pengguna mengeluh. Artikel ini membahas dua tool monitoring yang sangat powerfull: Netdata dan Grafana.

Pengertian Monitoring Server

Monitoring server adalah proses memantau kinerja dan kesehatan server secara real-time. Monitoring membantu mendeteksi masalah sebelum pengguna merasakannya, merencanakan kapasitas, dan memastikan layanan tetap tersedia.

Mengapa Monitoring Penting?

  • Deteksi Dini: Menemukan masalah sebelum menjadi kritis
  • Perencanaan: Mengetahui kapan perlu menambah resource
  • Accountability: Mengetahui uptime dan performa historis
  • Notifikasi: Menerima peringatan otomatis saat masalah terjadi
  • Troubleshooting: Memahami apa yang salah saat ada masalah

Pengertian Netdata

Netdata adalah tool monitoring real-time yang ringan dan sangat detail. Netdata memberikan dashboard interaktif dengan data per detik — CPU, RAM, disk, jaringan, proses, dan lainnya.

Keunggulan Netdata

  • Ringan: Konsumsi memory <1%, hampir tidak mempengaruhi performa
  • Real-time: Data diperbarui setiap 1 detik
  • Otomatis: Tidak perlu konfigurasi manual — langsung berjalan setelah instal
  • Dashboard Web: Akses via browser dengan UI yang modern dan interaktif
  • Zero Configuration: Instal dan langsung digunakan

Pengertian Grafana

Grafana adalah platform monitoring dan observabilitas yang canggih. Grafana menampilkan data dari berbagai sumber dalam bentuk grafik yang indah dan dapat dikustomisasi.

Keunggulan Grafana

  • Visualisasi Indah: Dashboard yang sangat cantik dan interaktif
  • Multi-Source: Menggabungkan data dari banyak sumber (Netdata, Prometheus, PostgreSQL, dll.)
  • Alerting: Notifikasi otomatis via email, Telegram, Slack, dll.
  • Plugins: Ribuan plugin untuk berbagai kebutuhan
  • Templating: Dashboard dinamis yang bisa disesuaikan

Perbandingan Netdata vs Grafana

AspekNetdataGrafana
InstalasiSangat mudahSedang
KonfigurasiOtomatisManual
ResourceSangat ringanSedang
Detail DataPer detikBisa diatur interval
VisualisasiBaikSangat bagus
AlertingDasarSangat canggih
Multi-serverTerbatasSangat baik
PenggunaanIndividualTeam/Enterprise

Rekomendasi: Gunakan Netdata untuk monitoring cepat dan ringan. Gunakan Grafana untuk monitoring tim dengan banyak server dan alert canggih. Gunakan keduanya untuk solusi lengkap.

Alat yang Dibutuhkan

  • Server Debian 13
  • Akses SSH sebagai root atau sudo
  • Browser untuk mengakses dashboard
  • Domain opsional (untuk akses jarak jauh)

Instalasi Netdata

1. Instal Netdata

bash
apt install netdata -y

2. Aktifkan dan Start

bash
systemctl enable netdata
systemctl start netdata
systemctl status netdata

3. Konfigurasi Akses Web

Netdata mendengarkan port 19999 secara default. Untuk mengakses:

bash
# Dari browser
http://server-ip:19999

4. Konfigurasi Akses Hanya dari Local

Edit /etc/netdata/netdata.conf:

ini
[web]
    bind to = 127.0.0.1

5. Akses via SSH Tunnel (Lebih Aman)

bash
ssh -L 19999:localhost:19999 root@server-ip
# Akses http://localhost:19999 dari browser lokal

6. Tambahkan Nginx Reverse Proxy (Opsional)

bash
nano /etc/nginx/sites-available/netdata

Isi:

nginx
server {
    listen 443 ssl;
    server_name netdata.masyarakat.id;
    
    ssl_certificate /etc/letsencrypt/live/netdata.masyarakat.id/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/netdata.masyarakat.id/privkey.pem;
    
    location / {
        proxy_pass http://127.0.0.1:19999;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
    }
    
    # Basic Auth
    auth_basic "Netdata Monitoring";
    auth_basic_user_file /etc/nginx/.htpasswd;
}

Fitur Monitoring Netdata

1. Dashboard Utama

Akses http://localhost:19999 untuk melihat:

  • CPU Usage: Penggunaan CPU per core, termasuk steal, iowait
  • Memory: RAM yang digunakan, cached, buffered
  • Disk I/O: Read/write speed per disk
  • Network: Bandwidth masuk/keluar per interface
  • Process: Daftar proses dengan resource tertinggi
  • Apache/Nginx: Status server web
  • MySQL/MariaDB: Query per detik, koneksi

2. Alarm

Netdata memiliki alarm bawaan:

bash
# Lihat alarm yang aktif
netdata alert

# Cek status alarm
cat /var/lib/netdata/alarm-notify/alarm.log

3. Notifikasi Email

Edit /etc/netdata/health_alarm_notify.conf:

ini
[SMTP]
    enabled = yes
    host = smtp.gmail.com
    port = 587
    user = [email protected]
    password = your-password
    from = [email protected]
    to = [email protected]

Instalasi Grafana

1. Instal Dependensi

bash
apt install -y apt-transport-https software-properties-common wget
wget -q -O /usr/share/keyrings/grafana-keyring.gpg https://apt.grafana.com/gpg.key
echo "deb [signed-by=/usr/share/keyrings/grafana-keyring.gpg] https://apt.grafana.com stable main" | tee -a /etc/apt/sources.list.d/grafana.list

2. Instal Grafana

bash
apt update
apt install grafana -y

3. Aktifkan dan Start

bash
systemctl enable grafana-server
systemctl start grafana-server
systemctl status grafana-server

4. Akses Grafana

Buka browser ke http://server-ip:3000

  • Username: admin
  • Password: admin (akan diminta ganti saat pertama login)

5. Konfigurasi Nginx Reverse Proxy

bash
nano /etc/nginx/sites-available/grafana

Isi:

nginx
server {
    listen 80;
    server_name grafana.masyarakat.id;
    
    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
    }
    
    # Basic Auth
    auth_basic "Grafana Dashboard";
    auth_basic_user_file /etc/nginx/.htpasswd;
}

6. Buat htpasswd

bash
apt install apache2-utils -y
htpasswd -c /etc/nginx/.htpasswd admin

Integrasi Netdata dengan Grafana

1. Tambahkan Netdata sebagai Data Source

  1. Login ke Grafana (http://grafana.masyarakat.id)
  2. Klik ConfigurationData Sources
  3. Klik Add data source
  4. Cari Netdata
  5. Isi URL: http://localhost:19999
  6. Klik Save & Test

2. Buat Dashboard

  1. Klik +Dashboard
  2. Klik Add new panel
  3. Pilih data source Netdata
  4. Pilih metrik (CPU, Memory, dll.)
  5. Atur visualisasi (graph, gauge, table)
  6. Simpan dashboard

3. Tambahkan Multiple Server

  1. Di Grafana, klik ConfigurationData Sources
  2. Tambahkan server Netdata lain
  3. Buat dashboard yang menampilkan semua server

Alerting dengan Grafana

1. Buat Alert

  1. Buka dashboard di Grafana
  2. Klik panel → Edit
  3. Klik AlertCreate Alert
  4. Atur kondisi:
  • WHEN avg() OF query(A, 5m, now) IS ABOVE 80
  1. Atur notifikasi:
  • Notification channels: Email, Telegram, Slack
  1. Simpan alert

2. Konfigurasi Notifikasi Telegram

  1. Buat bot Telegram dan dapatkan token (lihat artikel bot Telegram)
  2. Di Grafana, klik AlertingNotification channels
  3. Klik New channel
  4. Pilih Telegram
  5. Isi:
  • Bot Token: 123456789:ABCdefGHIjklMNOpqrsTUVwxyz
  • Chat IDs: 123456789
  1. Simpan

3. Contoh Alert Kritis

yaml
Alert: CPU > 90%
Query: avg(rate(node_cpu_seconds_total{mode="idle"}[5m])) < 0.1
For: 5 minutes
Notification: Telegram
Message: "⚠️ CPU server {instance} mencapai {value}%"

Monitoring dengan Prometheus dan Node Exporter (Opsional)

Untuk monitoring yang lebih enterprise, gunakan Prometheus + Node Exporter:

bash
# Instal Node Exporter (menyediakan metrics untuk prometheus)
wget https://github.com/prometheus/node_exporter/releases/download/v1.7.0/node_exporter-1.7.0.linux-amd64.tar.gz
tar xvfz node_exporter-*.tar.gz
mv node_exporter-*/node_exporter /usr/local/bin/

Buat systemd service:

bash
nano /etc/systemd/system/node-exporter.service
ini
[Unit]
Description=Node Exporter
After=network.target

[Service]
User=node-exporter
ExecStart=/usr/local/bin/node_exporter
Restart=always

[Install]
WantedBy=multi-user.target

Manajemen Penyimpanan Data

Netdata

bash
# Cek ukuran database Netdata
du -sh /var/lib/netdata/dbengine/

# Konfigurasi retensi
nano /etc/netdata/netdata.conf
[dbengine]
    history = 3600       # Simpan data 1 jam (dalam detik)

Grafana

bash
# Cek ukuran database Grafana
du -sh /var/lib/grafana/

# Backup database Grafana
cp /var/lib/grafana/grafana.db /backup/grafana-db-$(date +%Y%m%d).bak

Troubleshooting

1. Netdata Tidak Bisa Akses

Solusi:

bash
systemctl status netdata
ss -tlnp | grep 19999
# Pastikan port terbuka
ufw allow 19999/tcp

2. Grafana Login Error

Penyebab: Password default belum diubah. Solusi:

bash
# Reset password via CLI
grafana-cli admin reset-admin-password newpassword

3. Data Tidak Update di Grafana

Penyebab: Data source belum dikonfigurasi atau node exporter tidak berjalan. Solusi:

bash
# Cek node exporter
systemctl status node-exporter
# Cek data source di Grafana → Configuration → Data Sources

4. Netdata Konsumsi Memory Tinggi

Penyebab: Terlalu banyak chart diaktifkan. Solusi:

bash
# Nonaktifkan chart yang tidak diperlukan
nano /etc/netdata/python.d.conf
# Edit untuk menonaktifkan chart tertentu

5. Grafana Tidak Muncul di Browser

Penyebab: Nginx belum dikonfigurasi atau service Grafana tidak jalan. Solusi:

bash
systemctl restart grafana-server
systemctl status grafana-server
nginx -t && systemctl reload nginx

Kesimpulan

Monitoring server dengan Netdata dan Grafana memberikan visibilitas penuh terhadap kesehatan dan performa server. Netdata memberikan pemantauan real-time yang ringan dan detail, sementara Grafana memberikan visualisasi yang indah dan alert canggih untuk tim.

Kombinasi keduanya memberikan solusi monitoring yang lengkap — dari deteksi masalah hingga notifikasi otomatis. Dengan dashboard yang baik, Anda dapat mengetahui kondisi server kapan saja tanpa harus login ke terminal.

Kunci utama:

  • Mulai dengan Netdata untuk monitoring cepat dan ringan
  • Tingkatkan ke Grafana ketika sudah membutuhkan alert dan visualisasi
  • Backup konfigurasi dashboard Grafana secara rutin
  • Atur alert yang reasonable untuk menghindari alert fatigue
  • Gunakan HTTPS dan authentication untuk dashboard monitoring
Catatan penting: Selalu proteksi dashboard monitoring dengan authentication (basic auth atau login). Jangan biarkan dashboard monitoring terbuka publik karena informasi server bisa dimanfaatkan oleh penyerang. Gunakan firewall untuk membatasi akses ke port monitoring hanya dari IP yang berwenang.
Ingat: Monitoring bukan sekadar melihat grafik — ini adalah sistem peringatan dini yang menyelamatkan server Anda dari masalah yang tidak terdeteksi. Jangan menunda pemasangan monitoring hingga Anda mengalami downtime. Lebih baik mencegah daripada mengobati.
Dipublikasikan untuk membantu para administrator server memantau kesehatan server secara visual dan proaktif.

Artikel Terkait