← All articles
black and gray computer motherboard

Beszel vs Netdata vs Glances: Choosing the Right Lightweight Monitoring Tool

Monitoring 2026-02-14 · 6 min read beszel netdata glances monitoring comparison server
By Selfhosted Guides Editorial TeamSelf-hosting practitioners covering open source software, home lab infrastructure, and data sovereignty.

You want to monitor your servers. You don't want to deploy Grafana + Prometheus + node_exporter + alertmanager and spend a weekend building dashboards. You want something lightweight that shows you CPU, memory, disk, and network -- preferably with a web interface and some kind of alerting.

Photo by Marc PEZIN on Unsplash

Three tools dominate this space: Beszel, Netdata, and Glances. All three are open source, all three are lightweight (compared to the Grafana stack), and all three can be running within minutes. But they serve different use cases, and picking the wrong one means either outgrowing it quickly or maintaining more complexity than you need.

This guide breaks down when to use each one.

Beszel lightweight server monitoring dashboard

Quick Overview

Beszel is a hub-and-agent monitoring system with a beautiful web dashboard. Install the hub on one server, deploy tiny agents on your other machines, and get a multi-server monitoring view. Minimal resource usage, minimal configuration.

Netdata is a feature-rich monitoring agent that auto-detects everything and gives you 2,000+ metrics with per-second granularity. Runs per-server by default but supports centralized viewing via Netdata Cloud or parent-child streaming.

Glances is a Python-based system monitor that works in the terminal, as a web server, and as an API. Think of it as htop on steroids -- with Docker support, export capabilities, and a plugin system.

Resource Usage

This is often the deciding factor for homelab users running on limited hardware.

Metric Beszel Agent Beszel Hub Netdata Glances
RAM (idle) ~10 MB ~50 MB ~150-300 MB ~80-120 MB
CPU (idle) <1% <1% 1-2% <1%
Disk (data) None (reports to hub) ~100 MB/server/month ~1 GB (configurable) Minimal (no retention)
Binary size ~10 MB ~30 MB ~100 MB ~50 MB (Python)
Dependencies None None None Python 3

Beszel is the lightest option by a wide margin. The agent is a single 10 MB binary that uses negligible RAM. If you're running a Raspberry Pi or a VPS with 512 MB of memory, Beszel's agent footprint is almost invisible.

Netdata is heavier because it does more -- it collects thousands of metrics per second and maintains a local time-series database. On a server with 1+ GB of RAM, the overhead is acceptable. On a 512 MB Pi, it's noticeable.

Glances falls in between. It's a Python application, so it has some overhead from the Python runtime, but it doesn't maintain a large data store.

Feature Comparison

Feature Beszel Netdata Glances
Web dashboard Yes (beautiful) Yes (excellent) Yes (basic)
Terminal UI No No Yes (primary)
Multi-server Yes (hub + agents) Cloud or streaming Client/server mode
Metrics count ~20 per server 2,000+ per server ~50 per server
Per-second data No (minutes) Yes Yes (display only)
Data retention Weeks-months Days-months (tiered) None (real-time only)
Docker monitoring Basic (CPU/mem) Detailed Yes (CPU/mem/net)
Auto-detection Manual Automatic (services, disks, etc.) Automatic
Built-in alerts Yes Yes (hundreds) Yes (via plugins)
API Limited Full REST API Full REST API
Export to Prometheus No Yes Yes
Custom dashboards No Limited No
Mobile-friendly Yes Yes Basic

Like what you're reading? Subscribe to Self-Hosted Weekly — free weekly guides in your inbox.

Dashboards and UI

Beszel

Beszel's dashboard is purpose-built and looks great without customization. The overview page shows all servers at a glance with color-coded health indicators. Drill into any server to see historical charts for CPU, memory, disk, and network.

The limitation: what you see is what you get. There's no way to add custom panels, change chart layouts, or visualize metrics that Beszel doesn't collect. For most homelab users, this is fine -- you want to know if things are healthy, not build a monitoring art gallery.

Netdata

Netdata's dashboard is the most feature-rich of the three. Thousands of charts organized into sections, with hover-syncing across all charts (hover over a CPU spike and every other chart jumps to the same timestamp). Zoom, pan, and anomaly highlighting are built in.

The sheer volume of data can be overwhelming. When you first open Netdata, you're looking at dozens of sections with hundreds of charts. But the search and filtering help, and after a few sessions you'll know exactly where to look.

Glances

Glances is primarily a terminal application -- the web UI is a secondary feature. The web interface renders the same data as the terminal view in a browser, but it's not as polished as Beszel or Netdata.

Where Glances excels: SSH into a server, run glances, and get a comprehensive overview immediately. No browser needed, no port to open. For quick troubleshooting, it's unbeatable.

Alerting

Beszel

Alerts are configured in the web UI per server:

Notification channels: email (SMTP), webhooks (Discord, Slack, ntfy, Gotify).

Simple and effective, but limited to the metrics Beszel tracks.

Netdata

Netdata ships with hundreds of pre-configured alerts covering everything from disk space to network interface errors. Most users need to tune thresholds rather than create alerts from scratch.

Custom alerts use a declarative configuration:

alarm: high_cpu_usage
on: system.cpu
lookup: average -5m of user,system
warn: $this > 80
crit: $this > 95
info: CPU usage is high

Notification channels: email, Slack, Discord, PagerDuty, Telegram, ntfy, Gotify, Pushover, and more.

Glances

Glances has a threshold-based alert system configured in glances.conf:

[cpu]
careful=50
warning=70
critical=90

But the alert system is basic compared to Beszel and Netdata. There's no built-in email or webhook notification -- you'd need to script something around the Glances API or use the AMP (Action Monitoring Plugin) system.

Multi-Server Monitoring

Beszel: Built for It

Multi-server is Beszel's core design. Deploy agents, connect them to the hub, and you have a unified dashboard. The SSH-based transport means no special firewall rules beyond SSH access. This is the simplest multi-server setup of the three.

Netdata: Possible but Complex

Netdata has two multi-server approaches:

  1. Netdata Cloud -- Free tier, provides a unified dashboard across all your agents. Data stays on your servers (Cloud queries agents directly). Requires an account.
  2. Parent-child streaming -- Fully self-hosted. Configure child agents to stream to a parent agent. More complex to set up but no external dependency.

Neither is as simple as Beszel's hub-and-agent model.

Glances: Limited

Glances can run in client/server mode (glances -s on the server, glances -c <host> on the client), but this is designed for one-at-a-time viewing, not a unified dashboard. There's no multi-server overview.

Installation

Beszel

# Hub
services:
  beszel:
    image: henrygd/beszel:latest
    ports:
      - "8090:8090"
    volumes:
      - beszel_data:/beszel_data
    restart: unless-stopped
# Agent (on each server)
services:
  beszel-agent:
    image: henrygd/beszel-agent:latest
    network_mode: host
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
    environment:
      - KEY=your-public-key-from-hub
      - PORT=45876
    restart: unless-stopped

Netdata

# One-line install
curl https://get.netdata.cloud/kickstart.sh > /tmp/netdata-kickstart.sh
sh /tmp/netdata-kickstart.sh --no-updates

Or Docker:

services:
  netdata:
    image: netdata/netdata:stable
    ports:
      - "19999:19999"
    cap_add:
      - SYS_PTRACE
      - SYS_ADMIN
    security_opt:
      - apparmor:unconfined
    volumes:
      - /proc:/host/proc:ro
      - /sys:/host/sys:ro
      - /var/run/docker.sock:/var/run/docker.sock:ro
    restart: unless-stopped

Glances

pip install glances[all]
glances  # Terminal mode
glances -w  # Web server mode (port 61208)

Or Docker:

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

When to Use Each

Choose Beszel When

Choose Netdata When

Choose Glances When

Combine Them

These tools aren't mutually exclusive. A common setup:

The Bottom Line

If you're monitoring multiple servers and want a clean dashboard with minimal overhead, start with Beszel. If you want maximum visibility into a single server with zero configuration, install Netdata. If you live in the terminal and want a powerful diagnostic tool, use Glances. All three install in minutes, all three are free, and none of them require you to learn PromQL or build Grafana dashboards. Pick the one that matches how you actually work, and you can always add another tool later if your needs change.

Get free weekly tips in your inbox. Subscribe to Self-Hosted Weekly