Netdata
Netdata is a free, open-source monitoring agent that installs itself, figures out what’s running on your machine, and starts charting it, per second, before you’ve touched a config file. There’s no dashboard to build and no query language to learn, which puts it at the opposite end of the setup spectrum from Prometheus and Grafana.
License: Netdata is actually three pieces of software under three different licenses, and conflating them is the easiest mistake to make here. The Netdata Agent, the part that collects metrics and ships inside the netdata/netdata Docker image, is GPLv3+, confirmed from the LICENSE file in the netdata/netdata GitHub repo. The Netdata UI, the dashboard you actually look at, is served from a CDN and bundled with the Agent, but it’s closed-source under Netdata’s own NCUL1 license, free to use but not an OSI-approved open source license. Netdata Cloud, the optional layer for multi-node dashboards and SSO, is closed-source as well, with a free community tier and paid tiers above it. None of that closed-source layer is required to install Netdata and watch your own metrics.
Quick facts: Official site netdata.cloud · GitHub netdata/netdata, 79,000+ stars · Docker image netdata/netdata on Docker Hub, tags stable/edge/latest · default port 19999 · CNCF member project.
What Netdata actually does
Costa Tsaousis built the first version of Netdata in 2013, after cloud transactions at the company where he worked started failing silently and nothing on the market could tell him why. That origin shows in what the tool still prioritizes: not dashboards, not query languages, but immediate visibility into whatever is actually happening on a box right now. Install it and it auto-discovers what’s running, nginx, PostgreSQL, Redis, and a few hundred other things, then starts charting all of it within seconds. No jobs to define, no exporters to wire up.
Two things separate it from most of the monitoring stack: collection interval and where the intelligence lives. Netdata samples per second by default, not every 15 or 30 seconds like a typical Prometheus scrape, and it trains a small anomaly-detection model for each metric locally, on the box being monitored, rather than shipping raw data somewhere else to be analyzed. The project counts 800+ collector integrations. Most of them just work without being told to.
Installing Netdata with Docker
The official image is netdata/netdata on Docker Hub, the same one Netdata’s own Docker installation docs point to. There are really two install paths: a one-line kickstart script for bare-metal or VM hosts, and Docker for anything already containerized. Docker asks for more than most containers do, because it has to see the whole host it’s watching, not just itself.
services:
netdata:
image: netdata/netdata:stable
container_name: netdata
pid: host
network_mode: host
restart: unless-stopped
cap_add:
- SYS_PTRACE
- SYS_ADMIN
security_opt:
- apparmor:unconfined
volumes:
- netdataconfig:/etc/netdata
- netdatalib:/var/lib/netdata
- netdatacache:/var/cache/netdata
- /:/host/root:ro,rslave
- /etc/passwd:/host/etc/passwd:ro
- /etc/group:/host/etc/group:ro
- /proc:/host/proc:ro
- /sys:/host/sys:ro
- /etc/os-release:/host/etc/os-release:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
volumes:
netdataconfig:
netdatalib:
netdatacache:
- Save the compose file above and run docker compose up -d. The three named volumes keep your configuration and metric history across container recreations.
- Open http://your-server-ip:19999. Charts should already be populating; there’s nothing to configure for this first look.
- Use the stable tag rather than latest if you want to avoid nightly builds. netdata/netdata without a tag pulls latest by default.
- Optional: connect the node to Netdata Cloud from Settings inside the dashboard, for a shared multi-node view and SSO. Skip it entirely and the local dashboard still works on its own.
docker compose up -d
Security notes: That compose file grants pid:host, network:host, SYS_ADMIN, SYS_PTRACE, and a read-only mount of the Docker socket, more than almost anything else in a typical homelab stack, because Netdata is monitoring the host itself, not a sandboxed service. And like Prometheus, the dashboard has no login by default: anyone who can reach port 19999 can see everything it’s collecting. Put it behind a reverse proxy with authentication, such as Caddy, or keep it off the public internet with something like Tailscale.
Netdata vs Prometheus + Grafana, Zabbix, and Glances
“Netdata vs Prometheus” isn’t quite the right framing, since Prometheus is a collector and time-series database while Netdata bundles collection, storage, ML, and a dashboard into one agent. The honest comparison is Netdata against a full Prometheus+Grafana stack, or against older enterprise tools like Zabbix.
| Netdata | Prometheus + Grafana | Zabbix | Glances | |
|---|---|---|---|---|
| Setup effort | Near zero, auto-discovers targets | Two services to configure, scrape configs to write | Server, agents, and a database to provision | Single binary, no persistence |
| Collection interval | Per second by default | 15-30s scrape interval, typical | Minute-level, typical | Real-time, live only |
| Anomaly detection | Built in, trained per metric at the edge | Not built in, needs external tooling | Trigger-based thresholds, not ML | None |
| History retention | Local disk, Cloud/Parents for centralizing | Configurable, commonly weeks | Long-term, database-backed | None, live snapshot only |
| Best for | Fast, detailed single or few-host visibility | Custom alerting, service metrics, scale | Larger, structured IT environments | A quick terminal-based check |
Netdata: pros and cons
- Auto-discovers services and starts charting them immediately, no dashboards to build first
- Per-second collection catches spikes that a 30-second scrape interval would smooth over and miss
- Anomaly detection is trained per metric locally, no separate ML pipeline to stand up
- One agent replaces the collector-plus-dashboard split that Prometheus and Grafana require
- The full Docker deployment needs host-level privileges (pid:host, network:host, SYS_ADMIN) that most containers never ask for
- No login on the dashboard by default, same exposure risk as Prometheus without a proxy in front
- Retention is local-disk by default; centralizing history across several nodes really wants Netdata Cloud or a self-hosted Parent
- The three-way license split between Agent, UI, and Cloud trips people up, since “open source” only accurately describes part of it
Hardware: Netdata’s own FAQ puts default resource use at around 5% CPU and 150MB RAM on a production system, dropping under 1% CPU and roughly 100MB RAM with ML and alerting turned off and ephemeral storage in use. That’s light enough for a Raspberry Pi or a spare core on a NAS to run comfortably. Our homelab setup guide for beginners covers picking hardware for the stack as a whole.
FAQ
Is Netdata free?
The Agent is, under GPLv3+, with full source on GitHub and no feature gate. The dashboard UI is free to use but closed source. Netdata Cloud adds a free community tier plus paid tiers for larger teams that want SSO and centralized management, none of which is required to self-host.
Do I need Netdata Cloud to use it?
No. The local dashboard at port 19999 works standalone, no account or sign-in required. Netdata Cloud only matters once you want one view across multiple nodes, or SSO for a team.
How much CPU and RAM does Netdata use?
Around 5% CPU and 150MB RAM by default, per the project’s own FAQ, less than 1% CPU and about 100MB RAM with ML and alerting disabled. That’s for the Agent itself, separate from whatever it’s monitoring.
Is Netdata better than Prometheus and Grafana?
Different tradeoff, not a strict upgrade. Netdata gets you detailed, per-second visibility into one or a handful of hosts with almost no setup. Prometheus paired with Grafana takes more work up front but scales further and gives you real control over alerting logic through PromQL. Plenty of homelabs run both for different jobs.
Can Netdata monitor Docker containers directly?
Yes, built in, through a read-only mount of the Docker socket, no separate exporter needed. Prometheus needs cAdvisor bolted on for the same job; Netdata just needs the socket mount already shown in the compose file above.
Netdata is the fastest way to get real, per-second visibility into a single box, or a handful of them, without writing a scrape config first. It’s worth pairing with Uptime Kuma for the simpler up/down question Netdata isn’t built to answer, and with Prometheus and Grafana once a homelab grows past a couple of hosts and needs custom alerting rules. Our homelab setup guide for beginners covers the Docker basics it runs on, and the Monitoring category rounds out the rest of the tooling here.