Skip to content
Go back

Glances vs Netdata: Two Free-Tier Monitors Compared

By SumGuy 10 min read
Glances vs Netdata: Two Free-Tier Monitors Compared

You Don’t Need a Grafana Stack for One Box

Let’s be honest. You’ve got three or four boxes in the basement — maybe a NAS, a Proxmox host, and a little VPS — and you want to know what’s going on without standing up Prometheus, Grafana, Alertmanager, and a Node Exporter for each machine just to see “is my RAM doing something weird at 3 AM?”

That’s a real deployment. It’s also overkill. Prometheus is incredible, but it’s a career, not a weekend project.

Enter the two serious contenders in the “just give me a dashboard without a PhD” tier: Glances and Netdata. Both are free. Both run on Linux (and more). Both give you real-time system metrics without an ops team. And they make wildly different choices about how to do it.

Here’s what actually matters when you’re picking one.


What They Are, in Thirty Seconds

Glances is a Python-based system monitor. It started life as a htop replacement — a pretty, colorful CLI view — and grew up into something that can expose a REST API, a web UI, and export to a dozen backends (InfluxDB, Prometheus, etc.). It’s lightweight almost by definition: Python isn’t known for its memory efficiency, but Glances keeps its RSS under 100 MB comfortably. Version 4.x added a proper client/server architecture, so you can have a central Glances instance pull from remote agents.

Netdata is a C-based collector that hits different. It’s built for per-second resolution out of the box, ships with ML-based anomaly detection, and has a web UI that’s genuinely beautiful in a way that surprises you the first time you open it. The open-source agent is fully self-contained. Netdata Cloud is opt-in — you can run the agent with zero telemetry, zero cloud connection, fully offline. The cloud just adds the multi-node dashboard and alerts-as-a-service.

Both have free tiers that cover everything a home lab needs.


Installing Them

Glances

Terminal window
# Python package manager — the cleanest path
pipx install glances[all]
# Or if you want the web server specifically
pip install glances[web]

If you want Docker:

docker-compose.yml
services:
glances:
image: nicolargo/glances:latest
restart: unless-stopped
pid: host
network_mode: host
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
environment:
- GLANCES_OPT=-w
ports:
- "61208:61208"

The -w flag starts the web server. Hit http://localhost:61208 and you’re done.

For remote monitoring in 4.x, run the agent on the remote host:

Terminal window
glances -s # starts as a server (XML-RPC by default)
# or via REST
glances --enable-webserver

Then connect from a central instance:

Terminal window
glances -c 192.168.1.50

Netdata

Terminal window
# One-liner installer (bash script, yes, review it if that's your thing)
wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.sh
sh /tmp/netdata-kickstart.sh --stable-channel --disable-telemetry
# The --disable-telemetry flag keeps it fully local. You'll still get the beautiful UI.

Or Docker:

docker-compose.yml
services:
netdata:
image: netdata/netdata:stable
container_name: netdata
hostname: your-hostname
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
- /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
ports:
- "19999:19999"
volumes:
netdataconfig:
netdatalib:
netdatacache:

That’s it. Open http://localhost:19999 and prepare for your first “oh, that’s actually pretty” moment.

Install effort verdict: Both are painless. Glances wins for minimal footprint — pipx install glances[all] and you’re done. Netdata’s kickstart script is excellent but assumes more of your system. If you’re paranoid about shell-pipe-to-bash installs (fair), the Docker Compose path is clean for both.


The Web UI: Not Even Close

Let’s not sugarcoat this. Netdata’s UI is better. It’s not a competition.

Glances gives you a functional, clean web interface. It’s readable. CPU, RAM, disk, network — all there, auto-refreshing. It looks like a web-ified version of the CLI, which is exactly what it is. Respectable. Honestly fine for most use cases.

Netdata gives you charts that update at one-second resolution, with hover states, zoom, pan, anomaly highlighting in red, and a sidebar organized into logical groups. It feels like something a real frontend team built. Because it was. The first time you see “ML anomaly detected” bubble up on a chart without configuring anything, you’ll understand why people put up with the learning curve.

Both have dark mode. Netdata’s is better. Moving on.


Alerting Out of the Box

This is where the gap is significant.

Glances ships with basic threshold alerts. You configure them in glances.conf:

~/.config/glances/glances.conf
[cpu]
careful=50
warning=70
critical=90
[mem]
careful=50
warning=70
critical=90
[disk]
careful=70
warning=80
critical=90

Notification integrations exist — IFTTT, Slack, Pushover, email — but they require manual configuration. Nothing fires by default. You have to know what you want and wire it up.

Netdata ships with hundreds of pre-written alert rules. CPU spikes, RAM pressure, disk space, network errors, OOM kills, swap exhaustion — they’re all there, out of the box, tuned with sane defaults from years of community use. On install, you already have alerts. You might get a notification five minutes after standing it up that something somewhere is slightly off (this has happened to me more than once, and it was always real).

For notifications, Netdata supports email, Slack, PagerDuty, Discord, Telegram, and more via its health notification system. Configure it in /etc/netdata/health_alarm_notify.conf:

/etc/netdata/health_alarm_notify.conf
# Slack
SLACK_WEBHOOK_URL="https://hooks.slack.com/services/your/hook/here"
DEFAULT_RECIPIENT_SLACK="#homelab-alerts"

Then restart Netdata. Done.

Glances can get there, but you’re building it. Netdata hands it to you.

Alert verdict: Netdata wins decisively. If you want alerts without configuration, there’s only one answer here.


Data Retention

Glances doesn’t store history by default. It’s a live-view tool. If you want historical data, you export to something else — InfluxDB, Prometheus (via the Prometheus exporter), Graphite. The Prometheus exporter is solid:

~/.config/glances/glances.conf
[prometheus]
host=0.0.0.0
port=9091
prefix=glances
labels=system:linux,release:5.15,machine:myhostname

Then Prometheus scrapes it like any other exporter. Clean integration, but you’re back to running Prometheus.

Netdata stores data locally at per-second granularity, with configurable retention. Default is a few days at full resolution, then it downsamples. You can tune this in netdata.conf:

/etc/netdata/netdata.conf
[db]
mode = dbengine
storage tiers = 3
# tier 0: per-second, last ~7 days
# tier 1: per-minute, last ~2 months (auto-calculated)
# tier 2: per-hour, last ~2 years (auto-calculated)

The database engine is efficient — a few GB for months of metrics on a single host. No external database required.

Retention verdict: Netdata, clearly. Glances needs external infrastructure for any history; Netdata handles it locally.


Container Monitoring

Both monitor containers. Neither requires you to install anything in the containers themselves.

Glances reads the Docker socket and exposes container stats alongside host metrics. In the web UI you get a container section with CPU, memory, and status. In 4.x it also supports Podman.

Netdata has deep cgroups v2 integration. Each container gets its own chart group. You see per-container CPU, memory, disk I/O, and network — at per-second resolution — right alongside host metrics. The anomaly detection extends to container metrics too.

If you’re running a lot of containers, Netdata’s container view is more organized. Glances treats containers as a list; Netdata treats them as first-class citizens.


Centralized: Multiple Hosts

Glances 4.x client/server mode lets you view multiple hosts through one interface — connect the Glances client to a remote server, or export everything to InfluxDB/Prometheus and build a unified view there. The client/server approach is functional but a bit clunky if you want a unified dashboard across 10 hosts.

Netdata handles this with Parent/Child streaming. A “parent” node receives metrics streams from “child” nodes and stores everything locally. The parent’s UI shows all connected hosts.

child's stream.conf
[stream]
enabled = yes
destination = parent-host:19999
api key = your-api-key-here
parent's stream.conf
[API_KEY_HERE]
enabled = yes
default memory mode = dbengine
health enabled by default = auto

This works fully offline — no Netdata Cloud involved. For 5-10 nodes, this is genuinely excellent. The UI on the parent shows a node selector and you’re clicking between hosts without running any additional software.

For 30+ nodes, though? Both tools start to show their limits. That’s where you actually want Prometheus + Grafana + the scrape configs and dashboards to match. You’re past the “free and simple” tier and into infrastructure engineering.


Privacy and the Cloud Question

Worth saying explicitly, since Netdata’s cloud offering sometimes spooks people:

Whether that trade-off is acceptable is your call. If it isn’t, run it offline. The agent is still excellent.

Glances has no cloud component. It’s just a Python program on your machine.


Footprint

Real numbers from a home lab node (Debian 12, nothing running in containers, idle):

RSS MemoryCPU (idle)
Glances (web mode)~80 MB<0.5%
Netdata~150–250 MB1–3%

Netdata is heavier, but it’s also doing a lot more — per-second collection, ML inference, local database. On a machine with 4 GB RAM, neither is a concern. On a 512 MB VPS, Glances is the obvious choice.

You can tune Netdata’s memory usage by disabling collectors you don’t need and adjusting the DB engine tier sizes.


The Bottom Line

Pick Glances if:

Pick Netdata if:

Don’t use either if you’re scaling past ~20 nodes or need long-term trending, cross-service correlation, or custom dashboards that aren’t just host metrics. At that point, Prometheus + Grafana is the correct tool and the time investment pays off fast.

For most home labs — a Proxmox host, a NAS, a VPS, maybe a Pi — Netdata is the right answer. Install it in 60 seconds, get beautiful dashboards and real alerts, and call it done. Your future self debugging that 3 AM memory leak will thank you.

Glances is what you run when Netdata is too much or when you want a terminal window that looks like you know what you’re doing during a video call. Both are good. Neither requires a storage class.


Share this post on:

Send a Webmention

Written about this post on your own site? Send a webmention and it'll show up above once verified.


Previous Post
Compose Watch: Faster Dev Loops
Next Post
tini vs dumb-init vs --init

Discussion

Powered by Garrul . Sign in with GitHub or Google, or post anonymously.

Related Posts