Logo

Monitor your VPS in real-time with Netdata

Monitor your VPS in real-time with Netdata

Install in under 2 minutes a comprehensive real-time monitoring dashboard. Netdata shows CPU, RAM, disk, network, processes, services and 800+ default metrics, with per-second visualization and automatic alerts.

Prerequisites

  • Linux VPS (Debian, Ubuntu, CentOS, Fedora, etc.)
  • Root or sudo access
  • 256 MB free RAM (very lightweight)

Step 1: One-command install

Netdata provides an official kickstart that detects the distribution:

wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh
sudo sh /tmp/netdata-kickstart.sh

During install, the script asks if you want to enable anonymous telemetry and connect to Netdata Cloud. You can refuse and use only the local dashboard.

Step 2: Access the dashboard

Netdata exposes its interface on port 19999:

http://YOUR_VPS_IP:19999

You immediately see all real-time metrics: CPU per core, RAM, swap, disk, network, top processes.

Step 3: Secure dashboard access

Port 19999 is publicly open by default, which isn't ideal. Two approaches.

Option A: Restrict by IP with UFW

sudo ufw deny 19999/tcp
sudo ufw allow from YOUR_FIXED_IP to any port 19999

Option B: Nginx reverse proxy with authentication

Install apache2-utils to create a password:

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

Configure Nginx:

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

Content:

server {
    listen 80;
    server_name netdata.your-domain.com;

    auth_basic "Netdata Monitoring";
    auth_basic_user_file /etc/nginx/.htpasswd-netdata;

    location / {
        proxy_pass http://127.0.0.1:19999;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Enable and add SSL:

sudo ln -s /etc/nginx/sites-available/netdata /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
sudo certbot --nginx -d netdata.your-domain.com

Block public port 19999:

sudo ufw deny 19999/tcp

Step 4: Configure alerts

Netdata includes 200+ default alerts (CPU > 90%, full disk, zombie processes, etc.). To receive alerts by email, Discord or Slack, edit:

sudo nano /etc/netdata/health_alarm_notify.conf
SEND_DISCORD="YES"
DISCORD_WEBHOOK_URL="https://discord.com/api/webhooks/XXX/YYY"
DEFAULT_RECIPIENT_DISCORD="alerts"

Email alerts

SEND_EMAIL="YES"
DEFAULT_RECIPIENT_EMAIL="[email protected]"

Reload:

sudo systemctl restart netdata

Test sending:

sudo -u netdata /usr/libexec/netdata/plugins.d/alarm-notify.sh test

Step 5: Auto-detected modules

Netdata auto-detects and monitors:

  • Nginx / Apache: connections, requests/sec, HTTP codes
  • MySQL / MariaDB / PostgreSQL: queries, connections, slow queries
  • Redis / Memcached: hit/miss ratio, memory
  • Docker: containers, CPU, RAM per container
  • PHP-FPM: pools, active requests
  • systemd: failed services
  • fail2ban: real-time banned IPs

List active modules:

sudo systemctl status netdata
ls /etc/netdata/python.d/

Step 6: Reduce retention to save disk

By default, Netdata keeps 1 hour of data in memory and 1 day on disk. To increase:

sudo nano /etc/netdata/netdata.conf

Modify:

[db]
    mode = dbengine
    storage tiers = 3
    # Tier 0 (high resolution, 1s)
    dbengine multihost disk space MB = 256
    # Tier 1 (1m)
    dbengine tier 1 multihost disk space MB = 128
    # Tier 2 (1h, long term)
    dbengine tier 2 multihost disk space MB = 64

Restart:

sudo systemctl restart netdata

Troubleshooting

Dashboard doesn't load

Check the service:

sudo systemctl status netdata
sudo journalctl -u netdata -n 50 --no-pager

High CPU caused by Netdata

Netdata normally uses less than 5% CPU. If more:

sudo nano /etc/netdata/netdata.conf

Increase collection interval:

[global]
    update every = 5

MySQL module not detected

Create a dedicated MySQL monitoring user:

CREATE USER 'netdata'@'localhost' IDENTIFIED BY '';
GRANT USAGE, REPLICATION CLIENT, PROCESS ON *.* TO 'netdata'@'localhost';
FLUSH PRIVILEGES;

Useful commands

# Status
sudo systemctl status netdata

# Logs
sudo journalctl -u netdata -f

# List active alerts
curl -s http://localhost:19999/api/v1/alarms | jq

# Uninstall Netdata
sudo /usr/libexec/netdata/netdata-uninstaller.sh --yes

Conclusion

Netdata is the simplest and most complete solution to monitor a Linux VPS. Going further, combine it with:

  • Uptime Kuma for external supervision (upcoming VeryCloud guide)
  • Netdata Cloud (free) to aggregate multiple VPS in a single dashboard
  • Prometheus / Grafana if you need long-term storage and custom dashboards

Resources

Join our Discord community server

For any questions, suggestions, or just to chat with the community, join us on Discord!

900+Members