Skip to content
Learni
View all tutorials
DevOps

How to Install and Configure Netdata in 2026

Lire en français

Introduction

Netdata is a revolutionary open-source monitoring tool that collects and visualizes thousands of system metrics in real-time, without any complex configuration. Unlike solutions like Prometheus or Grafana that require heavy setups, Netdata installs in minutes and offers an interactive web interface with smooth 1-second interval charts.

Why use it in 2026? Cloud servers and containers are exploding in complexity, and Netdata excels at detecting bottlenecks (CPU spikes, saturated disks, slow network connections) before they crash your apps. It's ultra-lightweight (less than 2% CPU), agentless for exports, and supports proactive alerts via email/Slack. This beginner tutorial guides you from installation to advanced config, with concrete examples for monitoring a typical Linux server. At the end, you'll have a professional dashboard ready to bookmark. (132 words)

Prerequisites

  • A Linux server (Ubuntu 22.04+ or Debian 12+ recommended)
  • Root or sudo access
  • Internet connection for installation
  • Minimum 1 GB RAM (Netdata is lightweight)
  • Web browser for the interface (Chrome/Firefox)

Quick installation via kickstart

install-netdata.sh
#!/bin/bash
# Automatic Netdata installation (stable)
bash <(curl -Ss https://get.netdata.cloud/kickstart.sh) --stable

# Or for the nightly version (latest features)
# bash <(curl -Ss https://get.netdata.cloud/kickstart.sh) --nightly

# Enable and start the systemd service
systemctl enable netdata
systemctl start netdata

# Check the status
systemctl status netdata

This one-liner script downloads and compiles Netdata with all collectors enabled (CPU, RAM, disk, Docker, etc.). It sets up systemd for auto-start. Skip APT packages for the latest version; run systemctl restart netdata afterward to apply changes.

Verifying the installation

Once installed, Netdata listens on port 19999 by default. Open http://your-ip:19999 in your browser. You'll instantly see animated charts: CPU usage per core, system load, swap memory, disk I/O, and over 200 metrics.

Analogy: Think of it as a real-time car dashboard—Netdata is your server's cockpit, alerting you to 'red warning lights' like network latency spikes.

Main configuration (netdata.conf)

/etc/netdata/netdata.conf
[global]
    bind to = 0.0.0.0
    port = 19999
    backlog = 10000
    uid = netdata
    gid = netdata

[web]
    allow connections from = localhost *
    allow gzip compression = yes
    page cache size = 1024

[health]
    enabled = yes
    default recipient = admin@example.com

[ml]
    enabled = yes

[dbmode]
    mode = dbengine
    update every = 1000
    history = 3600

This file centralizes global params: web port, bindings, health alerts, and DB mode (dbengine for persistence). Replace admin@example.com with your email. Save and restart Netdata to apply; pitfall: don't forget chown netdata:netdata permissions on config files.

Accessing the web interface and navigation

Refresh http://localhost:19999. Explore:

  • Overview: Global summary (like a server EKG).
  • CPU: Details per thread/process.
  • Disk: IOPS and throughput.

Use the sidebar menu to zoom (drag & drop) or export CSV. Family charts logically group items (e.g., all SSD disks).

Health alert configuration

/etc/netdata/health.d/cpu.conf
local:
  cpu_user: |
    on: system.cpu.user
    lookup: average -1m unaligned
    units: %
    every: 1m
    warn: $this > 80
    crit: $this > 90
    delay: up 2m down 1m multiplier 1.5 max 3
    info: high user CPU usage
    to: sysadmin

system:
  load1: |
    on: system.load.load1
    lookup: average -1m unaligned
    units: load
    every: 1m
    warn: $this > (($processor_count / 2))
    crit: $this > $processor_count
    delay: down 2m multiplier 1.1 max 10
    info: high system load1
    to: sysadmin

This template enables alerts for CPU user >80% and load average. The 'delay' settings prevent false positives. Copy to the health.d/ folder and restart Netdata. Test by stressing CPU with stress --cpu 4. Pitfall: variables like $processor_count are auto-substituted.

Customizing the dashboard

Beginner tip: Click 'Edit' on a chart to tweak colors/metrics. Save as a preset with the floppy disk icon.

For multi-server setups: Enable 'streaming' in netdata.conf to centralize to a parent node.

Export metrics to Prometheus

/etc/netdata/stream.conf
[stream]
    enabled = yes
    destination = prometheus-exporter:19999
    api_key = random-key-12345
    default_history = 3600
    on_metric_not_supported = warn

[prometheus]
    enabled = yes

    path = /api/v1/export/prometheus

[exporting:prometheus_remote_write]
    enabled = no

Enables native Prometheus export without external agents. Access /api/v1/export/prometheus for scraping. Ideal for Grafana integration. Restart and check logs with journalctl -u netdata. Avoid enabling all exports in production to limit load.

Docker containers configuration

/etc/netdata/apps_groups.conf
[*]
    0 : NETDATA

[docker]
    1 : DOCKER

[containerd-shim]
    1 : CONTAINERS

[crio]
    1 : CONTAINERS

[kubelet]
    1 : KUBERNETES

[etcd]
    1 : KUBERNETES

Groups Docker/K8s processes for dedicated charts. Auto-detected post-install; this config refines labels. Great for monitoring pod CPU in clusters. Pitfall: restart after editing to regroup.

Best practices

  • Secure access: Limit bind to to your IP and add basic auth via Nginx reverse proxy.
  • DB persistence: Keep history = 1d minimum; mount /var/cache/netdata on SSD.
  • Alerts: Always test with netdatacli test before production.
  • Updates: Automate via cron: bash <(curl -Ss https://get.netdata.cloud/kickstart.sh) --dont-wait --stable.
  • Scaling: For >10 servers, use a parent Netdata for aggregation.

Common errors to avoid

  • Blocked port: Check firewall ufw allow 19999 or SELinux.
  • Permissions: Always run chown -R netdata:netdata /etc/netdata /var/lib/netdata after edits.
  • Alert false positives: Increase 'delay multiplier' for noisy metrics like network.
  • Memory leaks: On old kernels, force dbmode = ram if dbengine glitches.

Next steps

Master advanced Netdata:


Share your setup in the comments!