Glances

Cross-platform system monitoring at a glance

Monitoring & Status ★ 33.7k stars Easy setup LGPL-3.0

Glances is a cross-platform system monitoring tool that presents a wide range of host metrics in a terminal or web view. It targets administrators wanting a quick overview of a single machine. It is deployed via Docker, pip, or packages.

Key features

  • Terminal and web monitoring views
  • Wide range of metrics
  • REST API and exporters
  • Cross-platform support

Pros & cons

Strengths

  • Very easy to run
  • Lightweight
  • Good single-host overview

Trade-offs

  • Best for one host at a time
  • Limited history

Glances replaces

Last reviewed Aug 26, 2026 · 750 words

Glances is the tool I open when a box feels slow and I want to know why within the next 10 seconds. One command shows CPU, memory, swap, load, disk I/O, network, filesystems, sensors, processes, and every Docker container's CPU and RAM on one screen, on any Linux, macOS, or Windows host, in 128 MB of RAM. What it is not is a monitoring system: history is minutes, alerting is rudimentary, and it looks at one host at a time. Treat it as a diagnostic instrument, pair it with something that keeps records, and it earns a permanent place in the stack.

Three modes from one binary

pip install glances or the distro package gets you the terminal view; it starts as glances. Two flags change the shape. glances -w starts the web UI on port 61208 with the same layout rendered in a browser, which is what you want on a headless server. glances -s runs it as a server that other Glances instances connect to with glances -c hostname, so from a laptop you can flip between boxes. There is also a REST API on the web port that returns every plugin's data as JSON, which is how Homepage and similar dashboards pull a live CPU gauge from it. On a 14-year-old Python codebase (first released 2012, now 33,430 GitHub stars) all of this is stable rather than exciting, and stable is what I want from a tool I run during an incident.

The Docker setup needs the host PID namespace and the socket

In a container Glances can only see what you let it see:

services:
  glances:
    image: nicolargo/glances:latest-full
    pid: host
    network_mode: host
    environment:
      - GLANCES_OPT=-w
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - /etc/os-release:/etc/os-release:ro
    restart: unless-stopped

pid: host is what makes the process list mean anything; without it you see one Python process. The socket mount is read-only and gives the container plugin per-container CPU, memory, and network. Note the tradeoff: a read-only Docker socket still grants a lot, because anything that can read it can inspect every container's environment variables. On a single-user homelab I accept that; on a shared box I would run it bare-metal from pip instead. The latest-full tag bundles the optional dependencies (sensors, Docker, exporters); latest is smaller and skips them.

What the screen tells you that top does not

The layout is opinionated in useful ways. Values are coloured by threshold (green, blue, magenta, red for OK, careful, warning, critical), so a red memory line is a finding rather than a number you have to interpret. Disk I/O and network are shown per device with rates, which is how you notice that the "slow" server is actually a single disk saturated by a scrub. The sensors plugin exposes CPU and drive temperatures where lm-sensors and smartmontools are installed. Thresholds are tunable in glances.conf, and the same file defines simple actions, so a critical CPU alert can run a script or send a notification, though I would not build an alerting pipeline on it.

History is the gap, and exporters fill it

Glances keeps a short ring buffer of samples and that is all. If you want to know what happened at 03:14 last night you need an exporter: it can push to InfluxDB, Prometheus, Elasticsearch, MQTT, CSV, and several others, so glances --export prometheus turns it into a metrics source that Prometheus scrapes and Grafana charts. The honest comparison is with Netdata, which does the same live view with per-second history and alerts built in, at the cost of a heavier agent and a cloud-nagging UI, and with Beszel, which covers the multi-host history use case for a fraction of the effort. The Grafana vs Netdata comparison covers where each of the heavier options wins.

What I'd do

Install Glances from pip on every Linux box you administer, because it costs nothing and you will want it during the next outage. Run the web mode in Docker only on the one host whose dashboard you check daily. For history and alerts, add Beszel for a homelab of under 10 machines or the Prometheus export route if Grafana is already running. Glances for the live picture, something else for the record: that split is the whole recommendation.

Compare Glances

21 head-to-head comparisons.

Similar monitoring & status apps