Server

Monitoring Server dengan Netdata - Setup Real-Time Dashboard di Ubuntu

Pernah nggak sih kamu panik tengah malam karena server tiba-tiba lemot tapi nggak tahu masalahnya di mana? Saya pernah banget. CPU usage tiba-tiba spike ke 98%, RAM habis, dan yang lebih parah -- nggak ada log yang jelas nunjukin apa yang salah. Setelah kejadian itu, saya langsung cari tool monitoring yang ringan, real-time, dan nggak ribet setup-nya. Ketemu sama Netdata.

Netdata itu tool monitoring open-source yang kasih kamu dashboard real-time secara gratis. Nggak perlu konfigurasi rumit, tinggal install langsung jalan. Cocok banget buat kamu yang punya VPS dan mau tahu kondisi server tanpa harus install Zabbix atau Grafana yang berat.

Apa Itu Netdata dan Kenapa Harus Pakai?

Netdata adalah agent monitoring yang berjalan di background dan mengumpulkan metrik sistem setiap detik. Data yang dikumpulkan termasuk CPU, RAM, disk I/O, network traffic, proses berjalan, Docker container, dan masih banyak lagi. Semua data ini ditampilkan dalam bentuk dashboard interaktif yang bisa diakses lewat browser.

Kalau dibandingkan dengan tool monitoring lain, Netdata punya beberapa kelebihan yang bikin dia menang telak:

  • Instalasi satu baris -- nggak perlu konfigurasi database terpisah atau dependency ribet
  • Ringan -- cuma makan sekitar 50-100MB RAM, jauh lebih hemat dari Zabbix
  • Real-time -- data di-update setiap 1 detik, bukan 30 detik atau 1 menit seperti tool lain
  • Zero configuration -- langsung auto-detect service yang berjalan di server kamu
  • Dashboard keren -- UI modern dengan grafik interaktif, nggak kalah dari Grafana
  • Alert bawaan -- sudah ada 200+ preset alert yang aktif otomatis

Kalau kamu pernah coba install Zabbix, pasti tahu betapa ribetnya setup server, database, frontend, dan agent secara terpisah. Dengan Netdata, cukup satu command dan langsung bisa monitoring.

Install Netdata di Ubuntu 24.04

Proses instalasinya super gampang. Pastikan server kamu pakai Ubuntu 20.04 ke atas ya. Jalankan command berikut:

bash <(curl -Ss https://my-netdata.io/kickstart.sh) --dont-wait

Script ini akan otomatis download dan install Netdata beserta semua dependensinya. Prosesnya biasanya selesai dalam 2-3 menit tergantung kecepatan server kamu.

Setelah instalasi selesai, Netdata langsung berjalan sebagai service. Kamu bisa cek statusnya:

# Cek status service
sudo systemctl status netdata

# Pastikan berjalan di port 19999
ss -tlnp | grep 19999

Secara default, Netdata listen di port 19999. Buka browser dan akses http://IP_SERVER:19999. Kalau kamu pakai firewall, jangan lupa buka port tersebut:

# Buka port 19999 di UFW
sudo ufw allow 19999/tcp
sudo ufw reload

Dashboard langsung muncul dengan semua metrik server kamu. Kalau kamu mau belajar lebih lanjut tentang mengamankan server, cek tutorial panduan lengkap mengamankan server Linux VPS yang sudah saya tulis sebelumnya.

Konfigurasi Netdata untuk Production

Setelah install, ada beberapa konfigurasi yang perlu kamu ubah supaya Netdata lebih optimal untuk production. File konfigurasi utama ada di /etc/netdata/netdata.conf.

# Edit konfigurasi
sudo nano /etc/netdata/netdata.conf

Beberapa settingan penting yang perlu diubah:

[global]
    # Listen di semua interface (default cuma localhost)
    bind socket to IP = 0.0.0.0

    # Setting memori yang dipakai (dalam MB)
    memory mode = dbengine
    
    # Ukuran database untuk historis data
    dbengine disk space MB = 256

[web]
    # Proteksi dengan basic auth
    web files owner = netdata
    web files group = netdata

Kalau kamu nggak mau dashboard bisa diakses publik, kamu bisa setup basic auth atau reverse proxy dengan Nginx. Buat yang sudah terbiasa deploy aplikasi web, setup reverse proxy untuk Netdata mirip dengan konfigurasi Nginx reverse proxy yang biasa dipakai untuk aplikasi Node.js.

Setup Nginx Reverse Proxy untuk Netdata

Mengakses dashboard langsung lewat port 19999 nggak ideal untuk production. Lebih baik pakai reverse proxy supaya bisa akses lewat domain atau subdomain standar (port 80/443). Buat file konfigurasi Nginx:

server {
    listen 80;
    server_name monitor.kinara.web.id;

    location / {
        proxy_pass http://127.0.0.1:19999;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # WebSocket support
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }

    # Basic auth (opsional tapi recommended)
    auth_basic "Netdata Monitor";
    auth_basic_user_file /etc/nginx/.htpasswd;
}

Buat password file untuk basic auth:

# Install apache2-utils untuk htpasswd
sudo apt install apache2-utils -y

# Buat user dan password
sudo htpasswd -c /etc/nginx/.htpasswd admin

# Restart Nginx
sudo nginx -t && sudo systemctl restart nginx

Sekarang kamu bisa akses Netdata lewat http://monitor.kinara.web.id dengan proteksi password. Jangan lupa tambahkan SSL dengan Let's Encrypt supaya lebih aman.

Auto-Detect Service di Server

Fitur keren Netdata adalah auto-detection. Dia bisa otomatis detect dan monitor service yang berjalan di server kamu tanpa perlu konfigurasi manual. Berikut beberapa service yang langsung ter-deteksi:

  • Nginx -- request rate, connection, error codes
  • MySQL/MariaDB -- query per second, slow queries, connection pool
  • PHP-FPM -- active processes, request queue, memory usage
  • Docker -- CPU, memory, network per container
  • Redis -- hit rate, memory, connected clients
  • PostgreSQL -- transactions, locks, cache hit ratio

Untuk Nginx, kamu perlu aktifkan stub_status dulu:

# Tambahkan di server block Nginx
location /nginx_status {
    stub_status on;
    allow 127.0.0.1;
    deny all;
}

Untuk MySQL, buat user monitoring khusus:

-- Login ke MySQL
CREATE USER 'netdata'@'localhost' IDENTIFIED BY 'password_rahasia';
GRANT PROCESS, REPLICATION CLIENT ON *.* TO 'netdata'@'localhost';
GRANT SELECT ON performance_schema.* TO 'netdata'@'localhost';
FLUSH PRIVILEGES;

Kemudian edit file /etc/netdata/python.d/mysql.conf:

mysql:
  name: 'local'
  host: '127.0.0.1'
  port: '3306'
  user: 'netdata'
  pass: 'password_rahasia'
  socket: '/var/run/mysqld/mysqld.sock'

Restart Netdata dan MySQL monitoring langsung aktif:

sudo systemctl restart netdata

Monitor Docker Container

Buat kamu yang deploy aplikasi pakai Docker, Netdata bisa monitor setiap container secara terpisah. Saya bahas lengkap tentang Docker Compose multi-service deployment di artikel sebelumnya. Nah, setelah deploy, monitoring-nya pakai Netdata.

Pastikan Netdata punya akses ke Docker socket:

# Tambahkan user netdata ke group docker
sudo usermod -aG docker netdata

# Restart Netdata
sudo systemctl restart netdata

Netdata akan otomatis detect semua container yang berjalan dan menampilkan metrik per container. Kamu bisa lihat CPU usage, memory consumption, network I/O, dan disk read/write untuk masing-masing container.

Dashboard Docker menampilkan informasi lengkap:

  • Container CPU -- persentase CPU yang dipakai tiap container
  • Container Memory -- RAM usage dan limit per container
  • Container Network -- bandwidth in/out per container
  • Container Block I/O -- disk read/write per container

Konfigurasi Alert dan Notifikasi

Netdata sudah punya 200+ alert preset yang aktif otomatis. Tapi kamu bisa customize threshold-nya sesuai kebutuhan. File alert ada di /etc/netdata/health.d/.

Misalnya, kamu mau ubah threshold CPU alert:

# /etc/netdata/health.d/cpu.conf
template: 10min_cpu_usage
      on: system.cpu
      os: linux
   hosts: *
    calc: $average
   units: %
   every: 1m
    warn: $this > 80
    crit: $this > 95
   delay: down 15m multiplier 1.5 max 1h
    info: CPU usage over the last 10 minutes
      to: sysadmin

Untuk notifikasi, Netdata support banyak channel. Yang paling praktis untuk developer Indonesia adalah Telegram. Setup Telegram alert:

# Edit konfigurasi Telegram
sudo nano /etc/netdata/health_alarm_notify.conf

Ubah settingan berikut:

SEND_TELEGRAM="YES"
TELEGRAM_BOT_TOKEN="123456789:ABCdefGhIjKlMnOpQrStUvWxYz"
DEFAULT_RECIPIENT_TELEGRAM="CHAT_ID"

Kamu perlu buat Telegram Bot dulu lewat @BotFather di Telegram, kemudian ambil chat ID dengan mengirim pesan ke bot dan akses https://api.telegram.org/botTOKEN/getUpdates.

Kalau kamu juga deploy Redis untuk caching, Netdata bisa monitor performa Redis juga. Coba cek tutorial setting Redis cache di VPS Ubuntu untuk setup lengkapnya.

Membaca Dashboard Netdata

Saat pertama kali membuka dashboard, mungkin kamu agak overwhelmed karena ada banyak grafik. Tapi tenang, saya jelasin bagian-bagiannya:

System Overview -- Bagian paling atas menampilkan ringkasan kondisi server: CPU usage, RAM usage, disk space, dan network traffic. Warnanya intuitif: hijau (normal), kuning (warning), merah (critical).

CPU Section -- Menampilkan breakdown CPU per core dan per jenis penggunaan (user, system, iowait, steal). Yang paling penting diperhatikan adalah iowait -- kalau tinggi, artinya server bottleneck di I/O disk.

Memory Section -- Menampilkan penggunaan RAM, swap, dan available memory. Kalau swap usage tinggi, itu tanda server butuh upgrade RAM. Perhatikan juga committed memory yang menunjukkan total memory yang dialokasikan ke semua proses.

Disk Section -- Grafik disk I/O menunjukkan kecepatan read/write ke disk. Kalau kamu pakai SSD, angkanya harusnya tinggi. Kalau HDD, grafik ini bisa nunjukin bottleneck.

Network Section -- Traffic in/out per interface. Berguna buat detect anomali seperti DDoS attack atau bandwidth abuse.

Tips Optimasi Netdata

Beberapa tips supaya Netdata berjalan optimal di server kamu:

  • Sesuaikan memory -- di file konfigurasi, ubah dbengine disk space MB sesuai kapasitas disk kamu. Default 256MB cukup untuk histori beberapa hari
  • Matikan chart yang nggak perlu -- kalau kamu nggak pakai IPv6, matikan chart IPv6 di /etc/netdata/netdata.conf
  • Gunakan streaming -- kalau kamu punya beberapa server, kamu bisa stream semua data ke satu Netdata master. Monitoring terpusat tanpa buka banyak dashboard
  • Export ke Prometheus/Grafana -- kalau kamu butuh grafik yang lebih fleksibel, Netdata bisa export data ke format Prometheus

Buat disable chart tertentu, edit /etc/netdata/netdata.conf:

[plugin:tc]
    # Matikan monitoring traffic control
    enabled = no

[plugin:proc:/proc/net/snmp6]
    # Matikan IPv6 SNMP monitoring
    enabled = no

Monitoring dari Luar Server

Netdata juga punya fitur bernama Netdata Cloud yang memungkinkan kamu monitor banyak server dari satu tempat. Cukup daftar di netdata.cloud dan connect server kamu. Fitur ini gratis dan sangat praktis kalau kamu manage beberapa VPS.

Untuk connect ke Netdata Cloud:

# Connect ke Netdata Cloud
sudo netdata-claim.sh -token=TOKEN_ANDA -rooms=ROOM_ID -url=https://app.netdata.cloud

Kamu bisa dapatkan token dan room ID dari dashboard Netdata Cloud setelah daftar. Setelah terkoneksi, semua metrik server kamu muncul di satu dashboard cloud. Beda server, satu tampilan.

Kesimpulan

Netdata adalah solusi monitoring yang paling praktis buat developer yang punya VPS. Nggak perlu setup ribet, nggak perlu database terpisah, dan dashboard-nya langsung informatif. Dengan satu command install, kamu sudah bisa tahu kondisi server secara real-time.

Kalau kamu baru pertama kali punya VPS dan belum tahu cara deploy aplikasi, coba baca tutorial deploy website ke VPS Linux dari nol supaya punya gambaran lengkap. Setelah deploy, pasang Netdata supaya server kamu selalu terpantau.

Saran saya, langsung install Netdata sekarang juga. Nggak ada alasan untuk nggak monitor server -- tool-nya gratis, ringan, dan setup-nya cuma butuh satu command. Daripada panik tengah malam karena server down tanpa tahu sebabnya, lebih baik pasang monitoring dari awal.

Kamu sudah coba Netdata atau pakai tool monitoring lain? Share pengalamanmu di kolom komentar ya!


You may also like


0 Comments


Leave a Reply

Comments with links or spam keywords will be rejected.
Scroll to Top