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
# Python package manager — the cleanest pathpipx install glances[all]
# Or if you want the web server specificallypip install glances[web]If you want Docker:
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:
glances -s # starts as a server (XML-RPC by default)# or via RESTglances --enable-webserverThen connect from a central instance:
glances -c 192.168.1.50Netdata
# One-liner installer (bash script, yes, review it if that's your thing)wget -O /tmp/netdata-kickstart.sh https://get.netdata.cloud/kickstart.shsh /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:
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:
[cpu]careful=50warning=70critical=90
[mem]careful=50warning=70critical=90
[disk]careful=70warning=80critical=90Notification 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:
# SlackSLACK_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:
[prometheus]host=0.0.0.0port=9091prefix=glanceslabels=system:linux,release:5.15,machine:myhostnameThen 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:
[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.
[stream] enabled = yes destination = parent-host:19999 api key = your-api-key-here[API_KEY_HERE] enabled = yes default memory mode = dbengine health enabled by default = autoThis 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:
- The Netdata agent is fully open source (GPL-3.0). It runs with zero cloud connection if you want.
- The
--disable-telemetryflag on install keeps it local. - Netdata Cloud is opt-in. You get a multi-node dashboard, alert management UI, and some ML features. Free tier covers unlimited nodes with some retention limits.
- If you opt in, your metrics metadata (not raw data) goes through Netdata’s infrastructure. Raw metric data stays on your agents.
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 Memory | CPU (idle) | |
|---|---|---|
| Glances (web mode) | ~80 MB | <0.5% |
| Netdata | ~150–250 MB | 1–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:
- You want minimal footprint (VPS, low-RAM nodes)
- You need a quick “what’s happening right now” view without any overhead
- You’re already running Prometheus and just want an exporter
- You prefer CLI-first tooling
- You don’t want anything phoning home, ever, and want zero configuration to ensure that
Pick Netdata if:
- You want gorgeous, useful dashboards out of the box
- Pre-written alerts that actually fire are important to you
- You have 3–10 nodes and want centralized monitoring without running Prometheus
- Per-second resolution matters (debugging a weird CPU spike from 4 hours ago)
- You want anomaly detection without building an ML pipeline
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.