Skip to Content
DocsDashboardSystem Monitoring

System Monitoring

The System Dashboard is your real-time telemetry center for monitoring server health. It provides live metrics, historical charts, hardware inventory, diagnostic tools, and automated alert rules — all in a wide-format layout designed for at-a-glance server awareness.

Admin only

The System Dashboard requires admin privileges (admin.system.dashboard permission). Navigate to it from the sidebar under Dashboard > System Dashboard.


Key features

Live Metrics

Real-time CPU, memory, swap, disk, and network utilization updated via server-sent events

Bandwidth History

Historical bandwidth charts powered by vnStat with configurable time ranges

Health Scoring

Deep-dive health cards for CPU, memory, and storage with status indicators

Quick Actions

Common system operations — memory cleanup, CPU governor, and more — accessible in one click

Software RAID

Live array status, member disk SMART health, rebuild progress, and mount point visibility for mdadm arrays

Monitor Rules

Create automated alert rules for CPU, memory, and disk thresholds with configurable actions

Diagnostics

Generate a diagnostic bundle for troubleshooting or download system logs

Streaming Maintenance

Run and monitor Plex Butler tasks and Emby/Jellyfin scheduled tasks from a single panel (shown when WSDashboard is enabled)

Telemetry History Store

Durable on-box metric history that keeps CPU, memory, network, and disk charts gap-free across restarts, deploys, and reinstalls

Inter-Instance Transfers

Live cockpit for transfers moving between this server and your other instances — shown when the feature is enabled (admin only)


Overview metric strip

At the top of the System Dashboard, a row of KPI tiles gives you an instant snapshot of server health:

MetricWhat it shows
CPU
Current CPU utilization as a percentage
Memory
RAM usage relative to total capacity
Swap
Swap space usage — elevated values may indicate memory pressure
Disk
Storage consumption for your primary mount point
Network In
Current inbound network throughput
Network Out
Current outbound network throughput

These tiles update in real time. A status indicator in the page header shows whether telemetry streaming is active.


Bandwidth history

The bandwidth history section occupies the largest area of the System Dashboard. It displays time-series charts showing network throughput for your selected interface, powered by vnStat.

Key capabilities:

  • Time range selection — Choose from predefined ranges or use the timeseries player controls to scrub through historical data
  • Multiple interfaces — If your server has more than one network interface, select which one to chart from the command bar
  • Chart interaction — Hover over data points to see exact values. The chart updates in real time when viewing the current time window

The health sidebar next to the bandwidth chart shows a compact summary of CPU, memory, and storage health with status badges.

Network topology auto-heal

vnStat keeps its tracked interface list in sync with your server automatically. When a bond, bridge, team, or VLAN-aggregate interface appears or disappears - for example, after you bond two NICs or remove a virtual bridge - vnStat re-registers the new topology on its own. You no longer need to manually drop old interfaces and add the bond before bandwidth charts start working.

Manual override

If you want to force a re-sync (for example, after hand-editing vnstat.conf or rebuilding network configuration outside QuickBox), use the Rebuild interfaces button in the Network Stats panel of the System Dashboard, or run qb manage vnstat —rebuild from the CLI. See Network Tracking for the full reference on triggers, the rebuild flow, and the —status / —dry-run options.


CPU and memory panels

Below the bandwidth chart, dedicated CPU and memory panels display:

  • Real-time utilization — Live-updating charts showing current CPU and memory usage
  • Historical data — Time-series charts with the same range controls as the bandwidth section
  • Per-core breakdown — CPU charts show individual core utilization when expanded
  • Thermal data — CPU temperature readings when hardware sensors are available

Telemetry History Store

The System Dashboard keeps a durable, on-box history of your server’s metrics so the CPU, memory, network, and disk history charts stay gap-free — they survive service restarts, dashboard deploys, a full reinstall of the main database, and Redis being absent. The Telemetry History Store panel sits below the live metric charts and gives you a per-metric view of exactly how much history is preserved.

Admin only, entirely local

The Telemetry History Store panel is visible to administrators only. All of its data lives in a dedicated on-server database (qbpro.metrics.db) on your own machine — it is never transmitted anywhere.

Summary row

At the top of the panel, a summary row shows the total rows stored, the on-disk size of the store, the number of retention tiers, and a live health status — Active or Idle.

Metrics that are persisted

Nine system metrics are recorded into the store:

  • CPU, memory, network, disk usage, disk I/O, load average, swap, GPU, and temperature.

Each metric is written by a read-only observer of the live samplers, so a storage hiccup can never interrupt live sampling, the live stream, or a dashboard request.

Tiered retention

Every sample is downsampled on write into four resolution tiers at once — a running average lives in the database, so the rollups survive a restart. Charts automatically pick the tier that fits the range you ask for, so a multi-year view reads the 1-day tier instead of millions of raw rows.

TierResolutionRetention
Raw
Every sample as recorded
48 hours
1 minute
Per-minute averages
30 days
1 hour
Per-hour averages
1 year
1 day
Per-day averages
Indefinite (kept until you clear it)

Per-metric cards

Below the summary, a grid of cards — one per metric — shows how the history for that metric is doing:

  • Coverage ring — how much history is preserved toward the next retention ceiling, colored by freshness.
  • Health pill — Live, Idle, Delayed, or Stale.
  • Total span — the full time range of history held for the metric.
  • Row count — how many samples are stored.
  • What it feeds — which dashboard chart or feature the metric powers.
  • Per-resolution table — Raw / 1 min / 1 hour / 1 day, each with its retention, row count, and newest sample.

Each metric feeds a specific part of the dashboard:

MetricFeeds
CPU
CPU history chart
Memory
Memory history chart
Network
Network history chart
Disk
Disk usage tile
Disk I/O
Transfer correlation chart
Load average
Monitor alerts
Swap
Monitor alerts
GPU
Streaming Dashboard
Temperature
CPU health card

GPU and temperature cards

Two cards behave differently from the rest:

  • GPU is activity-bound. GPU metrics are sampled while the Streaming Dashboard is open or a hardware-accelerated stream is running — a playback session that transcodes on the GPU — so GPU history is naturally intermittent. When GPU samples age out, the card shows a neutral Idle rather than a red “Stale.”
  • Temperature is sensor-conditional. A temperature card appears only if the host reports a CPU temperature. Sensorless VMs and containers simply have no temperature card.

The seven universal metrics (CPU, memory, network, disk, disk I/O, load average, swap) always have a card. A single conditional fourth card completes a symmetric grid — GPU is preferred, otherwise temperature, and never both. A host with neither shows a clean three-card second row. The unpicked series is still stored, just not shown as a card.

Clearing history

A Clear history button permanently wipes the stored history. It is confirm-gated, so an accidental click never discards your history. Live charts keep updating after a clear; historical ranges are empty until data re-accumulates.

History survives restarts and reinstalls

Because the store is its own standalone SQLite database, your metric history is preserved across service restarts, dashboard updates, a reinstall of the main database, or a switch of the main database provider — and it does not need Redis to persist.


System inventory

The system inventory panel displays your server’s hardware and software details:

  • Hardware — CPU model, core/thread count, total memory, disk capacity
  • Operating system — Distribution, kernel version, hostname
  • Service uptime — How long the server has been running since last reboot
  • Mount points — Configured storage mount points with usage breakdown

Software RAID monitoring

On servers with Linux software RAID (mdadm) arrays, the System Dashboard displays a dedicated RAID panel with live array status, member disk health, and rebuild progress. The panel appears automatically when RAID arrays are detected — no configuration is required. On servers without software RAID, the panel is hidden entirely with zero overhead.

Array overview

Each detected array shows key identification and status information:

FieldWhat it shows
Array name
The md device name (e.g., md0, md1)
RAID level
The array type — RAID 0, RAID 1, RAID 5, RAID 6, RAID 10, or linear
State
Current array state: active, degraded, rebuilding, or inactive
Mount point
Where the array is mounted on the filesystem (e.g., /, /home)
Disk count
Total, active, working, failed, and spare disk counts
Health status
Overall health assessment — healthy, warning, critical, or unknown

Drive SMART health

For each member disk in an array, the panel collects S.M.A.R.T. data to assess drive health. SMART data refreshes every 5 minutes (independently of the 15-second array status updates) because the underlying smartctl probes are resource-intensive. Both SATA/SAS and NVMe drives are supported.

SMART MetricWhat it indicates
Health
Overall self-assessment result — PASSED or FAILED
Temperature
Current drive temperature in Celsius
Reallocated sectors
Number of bad sectors remapped to spare area — non-zero values indicate drive wear
Pending sectors
Sectors waiting to be remapped — non-zero values indicate developing problems
Power-on hours
Cumulative hours the drive has been powered on
SMART availability

SMART monitoring requires smartctl (part of the smartmontools package). If it is not installed, the RAID panel displays an install banner with a one-click Install button that provisions smartmontools via apt. After installation, drive health data begins flowing automatically on the next 5-minute SMART cycle — no page refresh needed.

Health indicators

The RAID panel uses a color-coded health system derived from array state, SMART data, and mismatch counts:

StatusColorConditions
Healthy
Green
Array is active, all disks report SMART PASSED, and the mismatch count is zero
Warning
Amber
Any disk has reallocated or pending sectors greater than zero, or the array mismatch count is non-zero
Critical
Red
Array is in degraded or rebuilding state, or any member disk reports SMART FAILED
Unknown
Gray
SMART data is unavailable (no smartctl) and array state alone cannot determine health

Rebuild progress

When an array is rebuilding, resyncing, reshaping, or running a consistency check, the panel displays a progress indicator with:

  • Percentage complete — how far the operation has progressed (0–100%)
  • Speed — current throughput of the rebuild operation (e.g., 185000K/sec)
  • Estimated time remaining — projected finish time based on current speed

The array state changes to “rebuilding” and the health status is set to “critical” for the duration of the operation, ensuring visibility.

Automatic detection

The RAID panel monitors /proc/mdstat at 15-second intervals and enriches the data with mdadm —detail for each array. You do not need to configure anything — if your server has software RAID arrays, the panel appears automatically. When arrays are removed, the panel disappears on the next poll cycle.


System users

This section shows Linux user accounts currently connected to the server and their active sessions. Each entry displays the username, terminal, connection time, and source IP address.


Health cards

The health cards provide deeper analysis for three key resource areas:

  • CPU Health — Load averages, governor settings, per-core utilization, and thermal status
  • Memory Health — Detailed breakdown of used, cached, buffered, and available memory plus swap usage
  • Storage Health — Per-mount usage, inode consumption, and growth trends

Each card includes a status indicator (healthy, warning, or critical) based on current utilization thresholds.


Quick actions

The quick actions section provides one-click access to common system operations:

ActionWhat it does
Clean Memory Cache
Drops filesystem caches to free up memory. Equivalent to qb clean memory
CPU Governor
View or change the CPU frequency scaling governor for performance optimization
Database Health
Run integrity checks on the QuickBox Pro SQLite database

Reboot and shutdown

Admin only

The Reboot server and Shut down server controls appear in the Quick Actions widget only for system administrators. Standard users never see them.

These two power controls let an admin restart or fully power off the host directly from the dashboard:

ControlWhat it does
Reboot server
Restarts the host. The server is briefly unavailable while it restarts — the dashboard connection drops and reconnects automatically once the server is back online.
Shut down server
Powers the host fully OFF. The server can only be powered back on from your host or provider console — <strong>not from this dashboard</strong>.

Each control opens a confirmation dialog before anything happens. The reboot dialog offers a Reboot now option alongside scheduling controls (see Scheduling reboots below). Shutdown carries extra friction because it cannot be undone from the dashboard: you must type SHUTDOWN into the confirmation field before the Shut Down Server button activates. Shutdown is always immediate — there is no scheduling for power-off.

After you confirm a reboot-now or shutdown, the dashboard responds first and then the server reboots or powers off a few seconds later, so you receive a confirmation message before the connection drops.

Shutdown is irreversible from the dashboard

A shutdown powers the server completely off. There is no dashboard control to turn it back on — you must use your hosting provider’s or hardware’s power console to start it again. Only use shutdown when you have console access to bring the server back.

Scheduling reboots

Administrators can schedule reboots for later instead of restarting immediately. Inside the reboot confirmation dialog, a timing selector offers three modes — Reboot now, One-time, and Recurring. The first restarts the host right away; the other two create a saved schedule that fires automatically at the time you choose. Scheduling is reboot-only — shutdown has no scheduling option.

ModeWhat it does
Reboot now
Restarts the host immediately. This is the standard reboot — no schedule is created.
One-time
Pick a date and time, and the server reboots once at that moment. The time must be at least one minute in the future.
Recurring
Reboot on a repeating cadence — every N days (up to 365) or every N weeks (up to 52), at a chosen time of day. The schedule keeps firing until you cancel it.

To create a one-time schedule, choose One-time, set the date and time, and select Schedule Reboot. For a recurring schedule, choose Recurring, set how often (the Every value and Days or Weeks unit) and the At time of day, then select Schedule Reboot.

All existing reboot schedules are listed in the same dialog under Scheduled reboots, each showing when it next fires. Select the trash icon beside a schedule to cancel it — its next run is removed and it will no longer reboot the server.

How scheduled reboots fire

Scheduled reboots are backed by the operating system’s own timer service, not the dashboard. A schedule fires at the configured time even if the dashboard or your browser session is closed, and it survives the reboot it triggers. One-time schedules clean themselves up after firing, so a single scheduled reboot never loops or repeats.


Monitor rules

Monitor rules let you set up automated alerts when server resources cross defined thresholds. You can create rules for:

  • CPU usage — Alert when CPU exceeds a percentage for a sustained period
  • Memory usage — Alert when RAM usage crosses a threshold
  • Disk usage — Alert when storage consumption reaches a warning level

Each rule can trigger configurable actions, such as sending a notification to admins.


APT runner

The APT Runner is a slide-out panel for managing operating system package updates:

  • Pending updates — View a list of available system package updates
  • Apply updates — Run package updates with live output streaming
  • Update history — Review previously applied updates
System packages

APT updates affect the underlying operating system packages, not QuickBox Pro applications. To update QuickBox-managed applications, use the Package Management panel on the App Dashboard or the qb update command.


Diagnostics

The diagnostics section allows you to generate a comprehensive diagnostic bundle that captures system state, logs, and configuration information. This bundle is useful when troubleshooting issues with the QuickBox support team.

Click Generate Diagnostics to create the bundle, which can then be downloaded as a file.

CLI alternative

You can also generate a diagnostic log from the command line with qb generate log.


Streaming Maintenance

Requires WSDashboard

The Streaming Maintenance panel is only visible to admin users when the WSDashboard feature is enabled on your server. If WSDashboard is not enabled, this section does not appear.

When WSDashboard is active, the System Dashboard includes a Streaming Maintenance panel directly below the RAID section. This panel gives admins a single place to trigger and monitor background maintenance tasks across all configured media servers — without leaving the system view.

What it shows

The panel renders one section per connected media server (Plex, Emby, and Jellyfin each appear separately when configured). Each section lists the maintenance tasks reported by that server, along with their current state, last-run time, and result status.

ColumnWhat it shows
Task name
The maintenance task's display name and category label (Library, Database, Media Analysis, Maintenance, etc.)
Last run
How long ago the task last completed (e.g., 2h ago, Never)
Last result
Outcome of the previous run: OK, Failed, Cancelled, or — if never run
Progress bar
A live progress bar that fills as the task runs. Updated in real time through the SSE event stream.
Run / Cancel
Run enqueues the task immediately. Cancel stops a task that is currently running. Only one button is visible at a time.

If a configured server returns no scheduled tasks, its section displays “No tasks reported” rather than being hidden entirely.

Task sources by server type

Emby and Jellyfin expose their maintenance operations through a standard Scheduled Tasks API. Plex uses a different subsystem called Butler — a set of named background jobs the Plex Media Server runs on its own schedule (library refreshes, database optimization, media analysis, bundle cleanup, and others). Butler task names and categories do not match Emby/Jellyfin task names, but the panel presents them in the same format.

On Plex, the panel also surfaces any active Activities — operations that are currently running rather than scheduled (for example, a library scan initiated from the Plex web interface). Active Activities appear alongside Butler tasks in the Plex section and can be cancelled if the activity supports cancellation.

Plex Butler task names

Butler tasks on Plex use PascalCase internal names (for example, RefreshLibraries, OptimizeDatabase, CleanOldBundles). The panel displays these in a human-readable format. Last-run time is not available for Butler tasks — the Plex API does not expose it. Only the running/idle state and progress are tracked.

Running and cancelling tasks

Click Run on any idle task to enqueue it immediately. The task state changes to running and a progress bar appears. Click Cancel on a running task to stop it. For Plex, cancellation routes to the appropriate endpoint depending on whether the task is a Butler task or an active Activity.

Live progress updates arrive through the dashboard’s server-sent events stream (activity.update events), so you see scan/refresh/optimize progress without refreshing the page.


Inter-Instance Transfers

Admin only, shown when transfers are enabled

The Inter-Instance Transfers panel appears on the System Dashboard for administrators once Inter-Instance Transfer is enabled under Settings → General. It shows live transfer activity for this server only — the transfers moving between this box and its paired instances, not a fleet-wide view.

When Inter-Instance Transfer is enabled, the System Dashboard includes a live cockpit for the transfers currently moving to and from this server. It is a monitoring surface — for the full send, approve, and pull workflow, see the Inter-Instance Transfer page.

The cockpit shows:

  • Summary strip — the number of active transfers, aggregate speed, and bytes moved in flight.
  • Sender → receiver node-map — a live map of this server and the peers it is exchanging data with.
  • Per-transfer rows — one row per active transfer: the local user, the direction (sending or receiving), the peer, size and percent complete, file count, elapsed time, average speed, live speed, and status.
  • A Transfers page button out to the full page, plus — for peers that have opted in — a deep-link straight to that peer’s own Transfers page.
Peer addresses stay private

A peer is shown by an opaque id or a friendly same-account label — never as an IP address, host, or port, and never as a peer-side username. The cockpit is admin only and enforces same-owner scope on every request.


CLI equivalents

Dashboard ActionCLI Command
Clean memory cache
qb clean memory
Generate diagnostics
qb generate log
Check for QuickBox updates
qb update check

Best practices

Do

  • Check the System Dashboard regularly to catch resource trends before they become problems
  • Set up monitor rules for disk usage to receive early warnings before storage fills up
  • Use the bandwidth history charts to identify unexpected traffic patterns
  • Generate a diagnostic bundle before contacting support — it helps the team resolve issues faster
  • Review memory health when applications are running slowly — high swap usage often indicates insufficient RAM
  • Install smartmontools on servers with software RAID to get full drive health visibility in the RAID panel
  • Let the Telemetry History Store accumulate — it keeps your metric history gap-free across restarts and reinstalls with no configuration, and only clear it when you deliberately want to discard history

Don't

  • Don't ignore sustained high CPU or memory readings — investigate which application is consuming resources
  • Don't ignore warning or critical RAID health indicators — reallocated sectors and mismatch counts can precede drive failure
  • Don't run memory cache cleanup constantly — the kernel manages caches efficiently under normal conditions
  • Don't apply APT updates during heavy server usage — schedule maintenance during off-peak hours
  • Don't confuse APT system updates with QuickBox application updates — they are separate operations

FAQ

The bandwidth history charts rely on vnStat for data collection. If vnStat is not installed or has not yet collected enough data, the charts will appear empty. VnStat needs time to accumulate statistics after initial setup. You can configure the network interface in Settings > General > Additional Dashboard Settings.
No. vnStat re-syncs its interface list automatically when network topology changes - bonds, bridges, teams, and VLAN aggregates are detected and registered on their own. If you want to force a re-sync after hand-editing vnstat.conf, click Rebuild interfaces in the Network Stats panel or run qb manage vnstat --rebuild.
Green indicates healthy resource levels. Yellow indicates a warning — the resource is approaching capacity. Red indicates a critical state — immediate attention is recommended. These thresholds are based on standard utilization percentages.
Yes. Use the time range selector and player controls in the command bar above the bandwidth chart to navigate to any historical period for which vnStat has data.
The System Dashboard is restricted to admin users with the admin.system.dashboard permission. If you are an admin and still cannot see it, check your role's permissions in User Management.
Monitor rules send notifications through the dashboard's notification system. You will receive alerts based on the notification channels you have configured in your profile (in-app, email, Discord, or Signal).
The Software RAID panel only appears on servers with Linux software RAID (mdadm) arrays. It checks /proc/mdstat for active arrays — if none exist, the panel is hidden entirely. Hardware RAID controllers that present virtual disks to the OS (without mdadm) will not show a RAID panel.
SMART monitoring requires smartctl from the smartmontools package. If it is not installed, the RAID panel shows an install banner with a one-click Install button that provisions the package automatically. After installation, drive health data begins flowing within 5 minutes.
Array status (state, disk counts, rebuild progress) updates every 15 seconds via server-sent events. SMART data for member disks refreshes every 5 minutes because the underlying smartctl probes are resource-intensive. Between SMART refreshes, the most recent cached values are displayed.
The mismatch count (read from /sys/block/mdX/md/mismatch_cnt) indicates data inconsistencies found during a scrub or check operation. A non-zero value triggers a warning health status. While small mismatch counts on RAID 1/10 can be benign (e.g., from swap partitions), they should be investigated on RAID 5/6 arrays as they may indicate silent data corruption.
The Streaming Maintenance panel requires two conditions: you must be logged in as an admin, and the WSDashboard feature must be enabled on your server. If either condition is not met, the panel is hidden. Enable WSDashboard from the Streaming Dashboard settings page, then return to the System Dashboard.
The Plex Butler API does not expose last-run timestamps for scheduled tasks — it only reports whether each task is currently running or idle. Last-run time is available for Emby and Jellyfin tasks because their Scheduled Tasks API includes execution history.
Yes. In the reboot confirmation dialog, administrators can choose One-time to reboot once at a future date and time, or Recurring to reboot every N days (up to 365) or every N weeks (up to 52) at a chosen time. Scheduling applies to reboot only — shutdown is always immediate.
Yes. Scheduled reboots run through the operating system's own timer service, independently of the dashboard. The schedule fires at the configured time even if the dashboard and your browser session are closed, and it survives the reboot it triggers.
Open the reboot dialog. Existing schedules are listed under Scheduled reboots, each showing its next run time. Select the trash icon beside a schedule to cancel it — it will no longer reboot the server.
The Telemetry History Store keeps four resolution tiers at once: raw samples for 48 hours, per-minute averages for 30 days, per-hour averages for 1 year, and per-day averages indefinitely (until you clear the history). Charts automatically read whichever tier fits the range you request, so a multi-year view uses the compact 1-day tier.
Yes. The Telemetry History Store is its own standalone SQLite database (qbpro.metrics.db) on the server, so history is preserved across service restarts, dashboard updates, a reinstall of the main database, or a switch of the main database provider. It does not depend on Redis.
No. The Telemetry History Store is entirely local — it lives in an on-server database and is never transmitted anywhere. It is separate from the account-dashboard telemetry that your server reports over the heartbeat.
GPU metrics are sampled while the Streaming Dashboard is open or a hardware-accelerated stream (a playback session transcoding on the GPU) is running, so GPU history is intermittent by design — an idle, unwatched GPU simply has gaps. When GPU samples age out, the card shows a neutral Idle rather than a red Stale — that is expected, not a fault.
The temperature card appears only if the host reports a CPU temperature. Sensorless virtual machines and containers have no temperature sensor, so no temperature card is shown. The remaining metric cards are unaffected.
The Inter-Instance Transfers cockpit is admin only and appears only after an administrator enables Inter-Instance Transfer under Settings → General. If the feature is disabled, or you are not an administrator, the panel is hidden.

Join the Community

Media server operators sharing configs, getting support, and shaping the future of QuickBox Pro.

Dedicated Support
Feature Previews
Community Configs
Active Discussions
Join Discord Server
Last updated on