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.
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:
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.
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.
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.
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.
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:
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
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:
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.
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.
Beberapa tips supaya Netdata berjalan optimal di server kamu:
dbengine disk space MB sesuai kapasitas disk kamu. Default 256MB cukup untuk histori beberapa hari/etc/netdata/netdata.confBuat 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
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.
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!