Monitor system resources with Netdata real-time performance dashboard

Beginner 25 min Apr 03, 2026 20 views
Ubuntu 24.04 Ubuntu 22.04 Debian 12 AlmaLinux 9 Rocky Linux 9 Fedora 41

Set up Netdata for comprehensive real-time monitoring of CPU, memory, disk, and network resources with a web-based dashboard, email alerts, and customizable thresholds.

Prerequisites

  • Root or sudo access
  • Minimum 1GB RAM
  • Open port 19999
  • Email server or mail utility

What this solves

Netdata provides real-time system monitoring with an intuitive web dashboard that tracks CPU usage, memory consumption, disk I/O, network traffic, and application performance metrics. It offers zero-configuration installation with automatic service discovery, microsecond resolution data collection, and built-in alerting capabilities for proactive system management.

Step-by-step installation

Update system packages

Start by updating your package manager to ensure you get the latest versions of dependencies.

sudo apt update && sudo apt upgrade -y
sudo dnf update -y

Install required dependencies

Install essential packages needed for Netdata compilation and operation.

sudo apt install -y curl wget git build-essential autoconf automake pkg-config zlib1g-dev libssl-dev libuv1-dev cmake libjson-c-dev libelf-dev liblz4-dev
sudo dnf install -y curl wget git gcc gcc-c++ make autoconf automake pkgconfig zlib-devel openssl-devel libuv-devel cmake json-c-devel elfutils-libelf-devel lz4-devel

Download and install Netdata

Use the official Netdata installation script which automatically detects your system and installs the latest stable version.

curl -Ss https://get.netdata.cloud/kickstart.sh | bash -s -- --stable-channel --disable-telemetry

Enable and start Netdata service

Configure Netdata to start automatically on boot and verify the service status.

sudo systemctl enable netdata
sudo systemctl start netdata
sudo systemctl status netdata

Configure firewall access

Open port 19999 to allow web dashboard access from your network.

sudo ufw allow 19999/tcp
sudo ufw reload
sudo firewall-cmd --permanent --add-port=19999/tcp
sudo firewall-cmd --reload

Configure web dashboard access

Secure web interface access

Configure Netdata to accept connections from your network by editing the main configuration file.

sudo mkdir -p /etc/netdata
sudo /usr/libexec/netdata/edit-config netdata.conf

Configure bind settings

Modify the web section to allow access from your local network. Replace 203.0.113.0/24 with your actual network range.

[web]
    bind to = *
    allow connections from = localhost 127.0.0.1 ::1 203.0.113.0/24
    allow management from = localhost 127.0.0.1
    
[global]
    update every = 1
    memory mode = dbengine
    page cache size = 32
    dbengine disk space = 256

Create authentication for web access

Set up basic HTTP authentication to secure the dashboard.

sudo htpasswd -c /etc/netdata/netdata.htpasswd admin

Enable authentication in configuration

Add authentication settings to the web section of the configuration.

[web]
    bind to = *
    allow connections from = localhost 127.0.0.1 ::1 203.0.113.0/24
    allow management from = localhost 127.0.0.1
    enable gzip compression = yes
    web files owner = netdata
    web files group = netdata

Restart Netdata service

Apply the configuration changes by restarting the service.

sudo systemctl restart netdata
sudo systemctl status netdata

Set up email alerts for critical metrics

Install email notification dependencies

Install mailutils or postfix for email functionality.

sudo apt install -y mailutils
sudo dnf install -y mailx

Configure health alert settings

Create a custom health configuration file to define email notification settings.

sudo /usr/libexec/netdata/edit-config health_alarm_notify.conf

Set up email notification parameters

Configure the email settings for alert notifications. Replace admin@example.com with your actual email address.

# Email configuration
SEND_EMAIL="YES"
DEFAULT_RECIPIENT_EMAIL="admin@example.com"
EMAIL_SENDER="netdata@example.com"

Email command (adjust based on your mail system)

SENDMAIL="/usr/bin/mail"

Enable notifications for specific roles

role_recipients_email[sysadmin]="admin@example.com" role_recipients_email[webmaster]="webmaster@example.com"

Test email notifications

Test the email notification system to ensure alerts will be delivered.

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

Customize monitoring thresholds and notifications

Create custom health configuration

Create a custom health configuration file for system-specific monitoring thresholds.

sudo mkdir -p /etc/netdata/health.d
sudo nano /etc/netdata/health.d/custom.conf

Configure CPU usage alerts

Set up custom CPU monitoring thresholds with different severity levels.

# CPU usage alerts
alarm: cpu_usage_high
    on: system.cpu
  calc: $user + $system + $nice + $iowait
 units: %
 every: 10s
  warn: $this > 80
  crit: $this > 95
 delay: down 5m multiplier 1.5 max 1h
  info: system CPU utilization is high
    to: sysadmin

Memory usage alerts

alarm: memory_usage_high on: system.ram calc: ($used) * 100 / ($used + $free + $buffers + $cache) units: % every: 10s warn: $this > 80 crit: $this > 90 delay: down 5m multiplier 1.5 max 1h info: system memory utilization is high to: sysadmin

Configure disk space alerts

Add disk space monitoring for critical partitions.

# Disk space alerts
alarm: disk_space_usage
    on: disk_space.used
  calc: $used * 100 / ($avail + $used)
 units: %
 every: 1m
  warn: $this > 80
  crit: $this > 90
 delay: down 15m multiplier 1.5 max 2h
  info: disk space utilization is high
    to: sysadmin

Load average alerts

alarm: load_average_high on: system.load lookup: average -10m unaligned of load1 units: load every: 1m warn: $this > 2 crit: $this > 4 delay: down 15m multiplier 1.5 max 1h info: system load average is high to: sysadmin

Configure network monitoring

Set up alerts for network interface issues and high traffic.

# Network interface down alert
alarm: network_interface_down
    on: net.operstate
  calc: $up
 units: boolean
 every: 10s
  crit: $this != 1
 delay: down 5m multiplier 1.5 max 1h
  info: network interface is down
    to: sysadmin

High network traffic alert

alarm: network_traffic_high on: net.net calc: abs($received) + abs($sent) units: kilobits/s every: 10s warn: $this > 80000 crit: $this > 100000 delay: down 15m multiplier 1.5 max 1h info: network traffic is unusually high to: sysadmin

Reload health configuration

Apply the new health monitoring configuration without restarting Netdata.

sudo netdatacli reload-health
sudo systemctl reload netdata

Verify your setup

sudo systemctl status netdata
sudo netstat -tlnp | grep 19999
curl -I http://localhost:19999
sudo netdatacli ping

Access your Netdata dashboard by opening http://your-server-ip:19999 in your web browser. You should see real-time metrics for CPU, memory, disk, network, and running processes.

Common issues

SymptomCauseFix
Dashboard not accessibleFirewall blocking port 19999Check firewall rules: sudo ufw status or sudo firewall-cmd --list-ports
Service fails to startConfiguration syntax errorCheck config syntax: sudo netdata -W unittest
Email alerts not workingMail system not configuredTest mail: echo "test" | mail -s "Test" admin@example.com
High memory usageDefault memory settings too highReduce dbengine page cache size in netdata.conf
Missing metricsRequired packages not installedInstall missing dependencies based on plugin requirements
Permission denied errorsNetdata user lacks accessAdd netdata user to required groups: sudo usermod -a -G docker,adm netdata

Next steps

Automated install script

Run this to automate the entire setup

#netdata #monitoring #dashboard #performance #alerts

Need help?

Don't want to manage this yourself?

We handle infrastructure for businesses that depend on uptime. From initial setup to ongoing operations.

Talk to an engineer