Dashboard: System Overview tab

ProxMenux Monitor · Dashboard~6 min

The first tab the dashboard opens on. Four live metric cards across the top, the historical-metrics chart in the middle, and condensed storage / network panels at the bottom — all derived from the same APIs that drive the dedicated tabs.

A read-only snapshot

Nothing on this tab is a control surface — every panel is informational. Actions live in the dedicated tabs they link to: drill into Storage to manage disks, into VMs & LXCs to start / stop guests, into the Security tab to configure auth, and so on.
System Overview tab — four metric cards (CPU, Memory, Active VMs, Temperature), node metrics chart, and Storage / Network summary cards
The System Overview tab — what the dashboard opens on. The four cards are live, the chart below is historical, and the two cards at the bottom summarise Storage and Network.

Top row: live metric cards

Four cards in a 2×2 grid on mobile, single row on desktop. Each updates from /api/system every few seconds.

CardWhat it showsSource
CPU UsageCurrent percentage with a progress bar. Updates ~1 s via the vital-signs sampler.psutil.cpu_percent()
Memory UsageUsed GB, percentage, total GB. Progress bar tracks the percentage.psutil.virtual_memory()
Active VM & LXCCount of currently running guests, with a Running / Stopped breakdown badge and a footer line for total VMs and LXCs./api/vms (consolidated)
TemperatureCPU temperature in °C with status badge (cool / warm / hot) and a 5-minute sparkline behind it. Shows N/A when no sensor is detected. Click to open the temperature detail modal.sensors / coretemp

Status colours and thresholds applied here

Every ring, bar, and sparkline on the four metric cards follows the same classification — <green/> green below Warning, <amber/> amber from Warning to Critical, <red/> red at Critical and above. Recommended defaults shipped with ProxMenux:
  • CPU usage — Warning 85 %, Critical 95 %.
  • Memory — Warning 85 %, Critical 95 % (Swap also fires Critical at 5 % used — a healthy Proxmox host should rarely touch swap).
  • CPU temperature — Warning 80 °C, Critical 90 °C.
Every value is configurable per host — Settings → Health Monitor Thresholds is the single source of truth and explains how to tune them.

The sparkline is meaningful

The temperature card draws a 5-minute trace under the value, with the line and gradient colour following the same Warning/Critical pair documented above. It's the fastest way to see whether the host is in a thermal climb without opening the detail modal.

Middle: node metrics charts

Below the top row sits the NodeMetricsCharts component — historical CPU, memory and disk-I/O graphs sourced from Proxmox's own RRD store via /api/node/metrics. A timeframe selector switches between 1 hour / 24 hours / 7 days / 30 days / 1 year; data resolution drops as the window grows so the chart stays smooth.

These are the same graphs that the Proxmox web UI renders for a node, just consolidated into the Monitor's dark theme and aligned with the other panels.

Bottom row: Storage & Network summaries

Storage Overview card

A condensed view of the host's storage state, broken into three blocks:

  • Total Node Capacity — sum of all VM/LXC storages plus the local system storage, with a gradient progress bar of the total used / free split.
  • Total Capacity / Physical Disks — raw capacity headline and the count of physical disks discovered.
  • VM/LXC Storage — used / free / percentage for the storages where guests live, plus a counter when more than one is configured.
  • Local Storage (System) — the host's own root / system mount, separately from the guest pool.

Drill-in lives in the Storage tab — per-disk SMART, ZFS pool details, observation history, etc.

Network Overview card

Top line shows the count of active interfaces (physical + bridges combined). Below that, two rows of coloured badges for the interfaces that are up — physical NICs in blue, bridges in a secondary colour. A timeframe selector at the top right (1 hour / 24 hours / 7 days / 30 days / 1 year) controls a small RX / TX traffic chart.

Per-interface drill-in (IP/MAC, RRD chart, bridge members, bond mode, etc.) lives in the Network tab.

Refresh model

Each panel manages its own loading state (loadingStates.cpu, loadingStates.storage, …) so a slow source doesn't block the rest. While a panel is fetching, it shows a pulse-animated skeleton; failed fetches degrade gracefully — for example, a missing temperature sensor renders the card as N/A instead of an error.

  • Top metric cards — refresh every ~5 s. The CPU and temperature panels also receive a 1 s push from the vital-signs sampler.
  • Node metrics chart — refresh every 30 s, or on timeframe change.
  • Storage card — refresh every 60 s. SMART data is cached longer (the Storage tab triggers a fresh read on demand).
  • Network card — refresh every 5 s on the active timeframe.
  • Manual refresh — the Refresh button in the header forces all panels to re-fetch immediately.

How the data is collected

CardEndpointSource
Header status pill/api/healthThe cached overall status produced by the Health Monitor each cycle.
CPU / RAM / Swap / Uptime/api/system/proc/stat, /proc/meminfo, /proc/uptime with short-window CPU sampling.
Host info (kernel, BIOS, distro)/api/infouname -a, dmidecode, PVE version. Cached per process.
Storage / network / VMs cards/api/storage/summary, /api/network/summary, /api/vmsSee the dedicated tabs for each. The header cards show a compacted view from the same endpoints.
Refresh cadenceCPU / network 5 s; storage / VMs 30 s; static info every 5 min. The Refresh button in the header forces an immediate re-fetch on every panel.
# Single call that backs the header pill
curl http://<host>:8008/api/health   # public, no token

# Authenticated snapshot used by the cards
curl -H "Authorization: Bearer <token>" \
  http://<host>:8008/api/system | jq '.cpu,.memory,.uptime'

Where to next

  • Health Monitor — the modal behind the header status pill (ten categories, dismissals, suppression).
  • API Reference — the system, info and health endpoints.
  • Notifications — how the same statuses turn into Telegram / Discord / Email messages.
  • Dashboard index — the other eight tabs at a glance.
  • Architecture — the background threads and APIs that power this view.