
Netdata is the best free real-time server monitoring tool for individual VPS administrators and small teams. It collects CPU, RAM, Disk, and Network metrics every second, displaying them on a beautiful and intuitive dashboard — completely free of charge.
Table of Contents
What is Netdata and Why Use It
Netdata is an open-source system monitoring tool developed since 2013, now running on over 1 million systems worldwide. Its key advantages include:
- Real-time at 1-second resolution — see changes instantly, no waiting 30-60 seconds like other tools
- Auto-discovery — automatically detects running services (Nginx, MySQL, Docker, etc.)
- Beautiful dashboard out-of-the-box — no visualization setup required
- Lightweight — uses only 100-200 MB RAM, less than 1% CPU
- 100% Free — Apache 2.0 license, self-hosted with no limitations
System Requirements
| Component | Minimum | Recommended |
|---|---|---|
| OS | Ubuntu 20.04+ / Debian 10+ | Ubuntu 22.04 LTS |
| RAM | 512 MB | 1 GB or more |
| CPU | 1 vCore | 2 vCore or more |
| Disk | 1 GB (1-day retention) | 5 GB (7-day retention) |
| Port | 19999 (local or reverse proxy) | Nginx reverse proxy + HTTPS |
All AsiaGB VPS plans starting from 1 GB RAM are fully compatible with Netdata.
Installing Netdata on Ubuntu/Debian
Method 1: Kickstart Script (Recommended — Fastest)
Run the following command on your VPS. Takes approximately 2-5 minutes:
wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh
sh /tmp/netdata-kickstart.sh --stable-channel --disable-telemetry
Flags used:
--stable-channel— use the stable release, not nightly builds--disable-telemetry— disable sending usage statistics to Netdata Inc.
Method 2: Install via Package Manager
# Ubuntu/Debian
curl -fsSL https://packagecloud.io/netdata/netdata/gpgkey | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/netdata.gpg
echo "deb https://packagecloud.io/netdata/netdata/ubuntu/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/netdata.list
sudo apt-get update
sudo apt-get install -y netdata
Verify Installation
sudo systemctl status netdata
# Expected: Active: active (running)
Enable Auto-start on Reboot
sudo systemctl enable netdata
Accessing the Dashboard
By default, Netdata listens on port 19999 on all interfaces. Access it immediately at:
http://YOUR_VPS_IP:19999
SSH Tunnel (Most Secure Method)
# Run on your local machine
ssh -L 19999:localhost:19999 user@YOUR_VPS_IP -N
# Then open your browser at
http://localhost:19999
Securing with Nginx Reverse Proxy
Use Nginx as a reverse proxy to access Netdata via HTTPS with basic authentication:
Step 1: Restrict Netdata to Localhost
Edit /etc/netdata/netdata.conf:
[web]
bind to = 127.0.0.1
sudo systemctl restart netdata
Step 2: Create Nginx Virtual Host
server {
listen 443 ssl;
server_name monitor.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/monitor.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/monitor.yourdomain.com/privkey.pem;
auth_basic "Netdata Monitoring";
auth_basic_user_file /etc/nginx/.htpasswd;
location / {
proxy_pass http://127.0.0.1:19999;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
Step 3: Create Password File
sudo apt install -y apache2-utils
sudo htpasswd -c /etc/nginx/.htpasswd admin
Configuring Alerts
Netdata includes over 400 pre-built alert templates. Configure Telegram notifications in /etc/netdata/health_alarm_notify.conf:
SEND_TELEGRAM="YES"
TELEGRAM_BOT_TOKEN="YOUR_BOT_TOKEN"
TELEGRAM_CHAT_ID="YOUR_CHAT_ID"
sudo systemctl restart netdata
Test Alert
sudo -u netdata /usr/libexec/netdata/plugins.d/alarm-notify.sh test telegram
Key Metrics to Monitor
| Category | Metrics | Alert Threshold |
|---|---|---|
| CPU | user, system, iowait | iowait > 20% = disk bottleneck |
| Memory | used, cached, buffered | used > 85% = insufficient RAM |
| Disk I/O | reads, writes, utilization | utilization > 80% = slowdown |
| Network | received, sent, packets | bandwidth approaching ISP limit |
| Load | load1, load5, load15 | load15 > number of CPU cores |
| Processes | running, blocked | blocked > 10 = I/O issue |
Netdata vs Prometheus/Grafana and Other Tools
| Tool | Setup Ease | Real-time | Resource Usage | Best For |
|---|---|---|---|---|
| Netdata | ⭐⭐⭐⭐⭐ Very Easy | 1 second | ~150 MB RAM | Individual VPS, SMB |
| Prometheus + Grafana | ⭐⭐ Complex | 15+ seconds | 500+ MB RAM | Enterprise, clusters |
| Zabbix | ⭐⭐⭐ Moderate | 30+ seconds | 300+ MB RAM | Enterprise |
| htop/top | ⭐⭐⭐⭐⭐ Very Easy | Real-time | Minimal | Quick debugging, no history |
Frequently Asked Questions
Does Netdata work on low-spec VPS?
Yes. Netdata needs only 100-200 MB RAM and less than 1% CPU overhead, suitable for any VPS starting from 1 GB RAM.
Is Netdata truly free?
Netdata Agent is 100% free and open-source under Apache 2.0 license. There is an optional Netdata Cloud for enterprise teams, but self-hosted usage has no limitations.
How do I update Netdata?
sudo /usr/libexec/netdata/netdata-updater.sh
How long does Netdata retain data?
By default, Netdata retains data in memory for approximately 1 hour. You can configure disk-based retention for months using the dbengine mode in /etc/netdata/netdata.conf.
Can I run Netdata in Docker?
docker run -d --name=netdata \
-p 19999:19999 \
-v netdataconfig:/etc/netdata \
-v netdatalib:/var/lib/netdata \
-v /proc:/host/proc:ro \
-v /sys:/host/sys:ro \
--cap-add SYS_PTRACE \
netdata/netdata
Summary
Complete Setup Checklist
- Install:
sh /tmp/netdata-kickstart.sh --stable-channel --disable-telemetry - Restrict port 19999 to localhost only
- Configure Nginx reverse proxy with HTTPS
- Create basic authentication
- Set up Telegram/Email alerts
- Access dashboard at
https://monitor.yourdomain.com
Netdata is one of the best investments of 5 minutes you can make for any VPS — it lets you detect server problems before your users do, or before your site goes down.
Looking for a reliable VPS to run Netdata on? Check out AsiaGB VPS — SSD storage, 99% Uptime, available in Thailand and Singapore with Thai-language support.