TurboPanel Docs
Server metrics

Everything TurboPanel tracks

This is the complete list of what a TurboPanel server reports about itself: each reading, its unit, how often it is read, how long it is kept, and where you see it. The pages in this section explain how to read each chart. This page is the inventory.

Plain words

Names here are the ones you see in the web interface. Storage details (how readings are packed on disk or in the hosted store) are internal and are not documented.

The rules that apply to everything

TopicWhat happens today
Reading rhythmThe daemon reads the host and sends one sample a minute. The first sample after it connects goes out at once, and rates (CPU busy, disk and network speed) follow about two seconds later, once there are two readings to subtract.
Live viewWhile someone watches a short range, the daemon also sends a 10 second stream. The stream feeds the chart and is not stored; the minute sample is what history keeps.
Slower readingsA few readings are expensive, so they are refreshed less often and the latest value rides along with every minute sample. The refresh times are in the tables below and summed up in How often each thing is read.
How long it is keptTurboPanel High Availability keeps about 3 months. Self-hosted keeps 90 days by default (TURBOPANEL_SERVER_METRICS_RETENTION_DAYS). Charts look back at most 90 days. Events and connection history are kept as long as the numbers.
Where it is storedEach table has a Kept on column. Both means TurboPanel High Availability and Self-hosted keep the reading in history, and the two keep exactly the same readings. Live view only means neither keeps the reading in history: it appears in the 10 second live view and is empty in history on both.
PlansEvery group on this page is collected on every plan, Docker included. A plan never switches a metric on or off, and a plan does not limit how many network interfaces, drives, GPUs, extra filesystems or sensors are stored: a server keeps what it has, up to 64 of each kind. See License tiers.
SizesEvery minute sample carries the sizes its percentages are measured against (below), so a resize or a memory balloon shows up as a step, not as a wrong percentage.
Limits on a serverA sample may carry at most 16 events; the 16 most severe are kept and the rest are held for the next sample (up to 64 extra events are carried; beyond that they are dropped). A sample dated more than 5 minutes away from the control plane's clock, in either direction, is refused.
ComingA stored-sample check (exactly one per minute per server), a limit of 120 events an hour, a tighter 60 second bound on samples dated in the future, and a 5 GiB cap on the self-hosted metrics store are written but not released yet. They are listed under Coming.

What “Not reported” means

A value is blank, never zero, when TurboPanel does not have it. Blank has four causes:

  • The host cannot measure it. No swap, no GPU, no interrupt-pressure file in an older kernel, a virtual machine with no real sensors. The chart or the group is hidden or empty.
  • The daemon is older than the control plane. A daemon that has not updated yet sends the plain sample, without the newer readings (OOM kills, container health, the sizes, host facts). They fill in once the daemon updates.
  • The reading was out of range. A percentage is held between 0 and 100; any other impossible value (a negative size, for example) is stored as blank.
  • TurboPanel does not store it on purpose. Some readings are not stored on either store, so that TurboPanel High Availability and Self-hosted keep exactly the same readings. 68 contract values stay in the wire contract and the descriptors but are stored by neither edition: the hosted layout has no slot for them and the self-hosted schema has no column. They show as no data in history on both, and are still shown in the 10 second live view. Nine of them were dropped to make room for the sizes, and each of those can be worked out another way:
Not storedGet it another way
Cores saturatedThe top CPU process text names a hog; CPU pressure shows the effect.
Hosting free spaceFree space on the disk that holds hosting (Root filesystem available or the extra filesystem that holds it).
Docker used spaceAdd the four Docker groups: image layers, container writable layers, volumes, build cache.
Logs used spaceNot available.
Major page faultsMemory pressure is the better signal.
Unreclaimable kernel slabNot available.
Caddy 2xx responsesRequests minus 4xx, minus 5xx.
Router backends upBackends total minus the names of unhealthy backends.
Router requestsCaddy counts every request first.

The other readings marked Live view only in the tables are among those 68 too: empty in history on both stores, and still shown in the live view.

Sizes and totals

These come with every minute sample. A chart divides each used figure by the size from its own sample.

SizeUnitUsed to showKept on
Total RAMbytesMemory used %Both
Total swapbytesSwap used %Both
Commit limit (the most memory the kernel will promise to processes)bytesCommitted memory vs limitBoth
Logical CPU countcountThe CPU count beside the CPU chartsBoth
Root disk size and inode totalbytes, countRoot filesystem used % and inodes usedBoth
Each extra filesystem's size and inode totalbytes, countThat filesystem's used %Both
Each GPU's memory sizebytesThat GPU's memory used %Both
Each network interface's link speedmegabits per secondLink speed shown with the interfaceBoth

CPU

Read every minute. Detail: CPU.

MetricUnitKept onScreen
CPU busy (all modes)percentBothCPU utilization, overview tile
User, system, I/O wait, steal (time taken by the host machine this server runs on), soft interruptspercentBothCPU utilization
CPU pressure (some tasks waited for a CPU)percent of the minuteBothCPU pressure
Interrupt pressure (hardware interrupts stalled the machine). Not reported when the kernel has no interrupt-pressure filepercent of the minuteBothNot charted yet; see Coming
Processes running, processes blocked, total processescountLive view onlyProcesses, overview tile
Process-limit use (share of the kernel's process ID limit)percentBothNot charted yet; see Coming
CPU frequency (average, minimum, maximum)MHzLive view onlyCPU frequency
Context switches, interruptsper secondLive view onlyContext switches and interrupts
Process forksper secondLive view onlyProcess forks
Hardware-interrupt timepercentLive view onlyIRQ time
Cores saturatedcountNot stored (see Not reported)Cores saturated

Host facts for CPU (text, refreshed every 5 minutes, kept on both): load average, the busiest process by CPU, the CPU model.

Memory and swap

Read every minute. Detail: Memory.

MetricUnitKept onScreen
Memory usedbytes, and percent of totalBothMemory breakdown, Memory used, overview tile
Page cache (cached file data)bytesBothMemory breakdown
Swap usedbytes, and percent of totalBothSwap used, Swap used %
Memory pressure, some and fullpercent of the minuteBothMemory pressure
Processes killed for memory (OOM kills)count in the minuteBothNot charted yet; see Coming. The same kill also raises an event
Committed memorybytesBothCommitted memory
Swap in and swap outbytes per secondLive view onlySwap I/O
Free memory, anonymous pages, shared memorybytesLive view onlyFree and cached memory, Shared memory
Reclaimable kernel slabbytesLive view onlySlab memory
Dirty pages, pages being written backbytesLive view onlyDirty and writeback pages
Page scans (direct and by the background reclaimer)per secondLive view onlyPage reclaim
Compaction stallsper secondLive view onlyCompaction stalls
Major page faultsper secondNot storedMajor page faults
Unreclaimable kernel slabbytesNot storedSlab memory

Host facts for memory (text, kept on both): the biggest process by memory, the last process the kernel killed for memory.

Disk, filesystems and disk I/O

Read every minute unless noted. Detail: Storage, Filesystems, Block devices.

MetricUnitKept onScreen
Disk I/O pressure, some and fullpercent of the minuteBothI/O pressure
Disk read and write speed (whole host)bytes per secondBothDisk throughput
Disk latency (whole host)millisecondsBothDisk latency
Root disk queue depth, root disk operationscount, per secondBothNot charted yet; see Coming
Root filesystem available, sizebytes, and percent usedBothRoot filesystem available, Root filesystem used
Root filesystem free inodes, inode totalcountBothRoot filesystem free inodes
Each extra (non-root) filesystem: available bytes, free inodes, size, inode totalbytes, countBothFilesystems
Per drive: read speed, write speed, operations, read latency, write latency, queue depthbytes per second, per second, milliseconds, countBoth. With a single drive the whole-host figures above are the drive's figures, so this group appears with two or more drivesBlock devices
Per drive: busy percent (utilization)percentLive view onlyBlock devices
Per drive: model and SMART verdict (text, refreshed every 30 minutes)textBothComing; see Coming
Software-RAID arrays degradedcountBothNot charted yet; see Coming. A degraded array also raises an event
Software-RAID arrays resyncingcountLive view onlyNot charted yet
Read-only filesystems, RAID state (text, refreshed every 5 minutes)textBothComing

Storage accounting

The daemon walks the hosting, backup and log folders every 15 minutes and re-sends the latest result with each minute sample. A walk that hits its time limit reports blank, not a partial total.

MetricUnitKept onScreen
Hosting usedbytesBothHosting root, overview tile
Backups used, backups freebytesBothBackups
Logs freebytesLive view onlyLogs
Hosting free, Docker used, logs usedbytesNot storedSee Not reported
Largest sites on disk (text, refreshed every 5 minutes)textBothComing

Managed databases on the host

The daemon counts managed database containers every 5 minutes, found by their label, and probes each running one for readiness.

MetricUnitKept onScreen
Postgres, MySQL and MariaDB instances running and healthycountBothManaged databases
Connections used and the connection limit, per enginecountLive view onlyManaged database connections
Engine versions (text, refreshed every 30 minutes)textBothComing

Network

Read every minute. Detail: Network.

MetricUnitKept onScreen
TCP retransmitspercent of segmentsBothTCP retransmit rate
Softnet drops (packets the kernel dropped before a program saw them)per secondLive view onlySoftnet drops
Connection-tracking table use, open file handles usepercentBothKernel resource usage
Per interface: receive and transmit speedbytes per secondBothNetwork
Per interface: receive and transmit errors, receive and transmit dropsper secondBoth from the third interface on. For the first two interfaces both keep one combined problems figure (errors plus drops)Network
Per interface: link state and speed (text)textBothComing

Interfaces that belong to the TurboFabric mesh are not listed as ordinary interfaces.

GPU

Read every minute, on physical servers and on virtual machines with a real passed-through GPU. A virtual display adapter does not count as a GPU. Detail: GPU.

MetricUnitKept onScreen
GPU utilizationpercentBothGPU
GPU memory usedbytes, and percent of the GPU's memoryBothGPU
GPU memory activitypercentBothGPU
PCIe receive and transmitbytes per secondBothGPU
ThrottlingpercentBothGPU
GPU model, driver version, memory size (text)textBothComing

GPU temperature, memory temperature and power are listed under Temperatures and power.

Temperatures and power

Read every minute, on physical servers only (a virtual machine reports none, because its probes are not real). A server reports up to 19 signals. Temperatures are stored in Celsius and shown in your organization's unit. Detail: Physical signals.

SignalUnitKept onScreen
CPU package temperature and powerdegrees, wattsBothPhysical signals
Hottest core, CPU thermally throttleddegrees, percentBothPhysical signals
Board and ambient temperatures the daemon trustsdegreesBothPhysical signals
Each drive's temperaturedegreesBothPhysical signals
Each GPU's core temperature, memory temperature and powerdegrees, wattsBothPhysical signals

Fan speed is not tracked as a number. Fan faults and alarms arrive as events.

Docker and containers

Docker metrics are on every plan. Container health and totals are refreshed every 30 seconds; disk use comes from Docker every 5 minutes (and backs off if Docker is slow to answer). Detail: Docker.

MetricUnitKept onScreen
Containers running, unhealthy, restartingcountBothNot charted yet; see Coming
Containers killed for memory, containers that exited unexpectedlycount in the minuteBothNot charted yet; see Coming
Containers' CPU (share of the whole host), containers' memorypercent, bytesBothNot charted yet; see Coming
Image layers, container writable layers, volumes, build cachebytesBothImage layers, Container writable layers, Volumes, Build cache
What a prune would reclaim, in totalbytesBothNot charted yet
What a prune would reclaim from images, volumes and build cache separatelybytesLive view onlyBuild cache, Volumes
Images, containers and volumescountLive view onlyObject counts
Docker version, names of unhealthy containers (text, refreshed every 5 minutes)textBothComing

An unexpected exit is one that is not a deploy and not a stop you asked for.

Web traffic: Caddy

Read every minute. TurboPanel reads the hosting Caddy for totals only; there are no per-site traffic numbers. Detail: Ingress (Caddy).

MetricUnitKept onScreen
Requestscount in the minuteBothIngress (Caddy)
4xx responses, 5xx responses, request errorscount in the minuteBothIngress (Caddy)
Request bytes, response bytesbytes in the minuteBothIngress (Caddy)
Time spent on requests (sum), so the average is derivedsecondsBothIngress (Caddy)
Requests finished within 100 ms, 500 ms, 1 scount in the minuteBothIngress (Caddy)
Requests in flightcountBothIngress (Caddy)
Days until the soonest hosting certificate expires (read every 6 hours)daysBothSoonest TLS expiry
3xx responses, requests within 10 ms, 50 ms and 5 s, retries, upstreams healthy and totalcountLive view onlyIngress (Caddy)
2xx responsescountNot storedSee Not reported

Percentiles (p50, p90, p99) are worked out when you open the chart; they are never stored, because a stored percentile cannot be combined across time.

Host facts for the web layer (text, refreshed every 5 minutes, kept on both): Caddy version, the soonest-expiring certificate's name, PHP versions, web engine versions, the busiest PHP pool.

Web traffic: the hosting router (Traefik)

Present only when Docker is on the host. Detail: Router (Traefik).

MetricUnitKept onScreen
Backends in totalcountBothBackends and services
Backend 5xx errorscount in the minuteBothBackend requests
Backend latency (average)millisecondsBothBackend latency
Services, routers, retriescountLive view onlyBackends and services
Open connectionscountLive view onlyOpen connections
Config reloads, time since the last reloadcount, secondsLive view onlyConfig reloads, Since last config reload
Backends up, requestscountNot storedSee Not reported

Database proxy (ProxySQL)

Present only when managed databases run. Read every minute. Detail: Database proxy.

MetricUnitKept onScreen
Queries, slow queriescount in the minuteBothDatabase proxy
Query latency, backend latency (averages)millisecondsBothDatabase proxy
Active transactions, client connections, backend connectionscountBothDatabase proxy
Clients aborted, connections refused at the limit, connection errorscount in the minuteBothDatabase proxy
Backends up, backends in totalcountBothDatabase proxy
Client connections opened, backend connections opened and aborted, bytes to and from the backendscount, bytesLive view onlyDatabase proxy

Host health and facts

Short pieces of text and a few counts that describe the host rather than chart over time. They are refreshed every 5 minutes (drive health and engine versions every 30 minutes) and travel with every minute sample.

FactUnitKept on
Failed system services (count)countBoth
Names of failed servicestextBoth
Kernel release, operating system release, boot identitytextBoth
Virtualisation (for example a virtual machine or not), cloud providertextBoth
TurboPanel daemon versiontextBoth
Clock sync statetextBoth
Pending updates, reboot requiredtextBoth
Drive models and SMART verdicts, GPU model and driver, network link speedstextBoth
Software versions: Docker, Caddy, Traefik, PHP, web engines, database enginestextBoth

The newest of these is meant to show as About this host in the web interface, and the counts as Host health. Neither is in the web interface yet; see Coming. Self-hosted keeps the same host text in history as TurboPanel High Availability.

Events

Events are things that happened at a moment: an out-of-memory kill, a disk fault, a network link going down, a GPU fault, the clock losing sync. TurboPanel has 38 kinds in a fixed list. The full list with explanations is on Metric events.

GroupKinds
Kernel and operating systemout-of-memory kill, hung task, connection-tracking table full
Filesystemsread-only, disappeared, remount
Disks and RAIDSMART critical, NVMe critical, NVMe media error, RAID degraded, rebuild started, completed, failed
Network and TurboFabriclink down, link up, flapping, mesh peer change, mesh unavailable, mesh recovered
Thermal, power and memory errorsfan fault, fan alarm, temperature alarm, temperature critical, power supply fault, voltage alarm, memory error corrected, memory error uncorrected
GPUXid fault, memory error, row remap, page retirement, fallen off the bus, thermal critical, disappeared
Clock and restartsclock sync lost, clock sync restored, hardware list changed, boot count changed

Checks run at different rhythms: most on every sample, hung tasks every 2 minutes, clock sync every 5 minutes, drive SMART every 10 minutes.

  • Kept: as long as the numbers (about 3 months on TurboPanel High Availability, 90 days by default on Self-hosted).
  • Limit today: at most 16 events per sample; over that, the 16 most severe are kept and the rest are held for the next sample (up to 64 extra events are carried; beyond that they are dropped).
  • Where: the Recent events panel on the Metrics screen. The panel is left out when nothing happened in the range.
  • Hardware-health events (the disk, thermal, power, memory and GPU groups) are on for physical servers by default.

How often each thing is read

CadenceWhat
Every minuteCPU, memory, disk and network numbers, GPU, temperatures and power, pressure, Caddy, router and database proxy figures
Every 10 seconds (live view only, never stored)The same numbers, while someone watches a short range
Every 30 secondsContainer health and totals
Every 2 minutesHung-task check
Every 5 minutesDocker disk use, managed database count, clock-sync check, host text (software versions, load, top processes, largest sites)
Every 10 minutesDrive SMART events
Every 15 minutesHosting, backup and log folder sizes
Every 30 minutesDrive health text, database engine versions
Every 6 hoursHosting certificate expiry

A slower reading shows the same value for several minutes in a row. That is not a stuck chart.

What shows on which screen

ScreenWhat it shows
Metrics on a serverOne chart per reading in the tables above, grouped as on this page, with a range from 5 minutes to 90 days. Gaps in a line are missing samples, not zero.
Overview tiles at the top of MetricsThe latest CPU utilization, memory used, hosting storage used, running and blocked tasks, and uptime. See Server metrics.
Recent events on MetricsThe events above, newest first.
Physical signals on MetricsTemperatures and power, physical servers only.
Servers listWhether a server is online right now. It does not come from metrics history.

Coming

These are written but not released. This page will drop the label when they are.

  • Host health and About this host in the web interface, and a chart for each health number that has none yet (OOM kills, interrupt pressure, process-limit use, root disk queue and operations, failed services, degraded RAID arrays, container health, containers' CPU and memory).
  • A host-facts route that returns the newest facts.
  • Exactly one stored sample a minute per server: a duplicate is refused, a sample sent too early is refused with a wait time.
  • 120 events an hour per server: events over the budget are dropped, most severe kept first, and the sample itself is still stored.
  • A 60 second bound on samples dated in the future. Today the bound is 5 minutes either way.
  • A 5 GiB cap on the Self-hosted metrics store; the oldest days are removed first.
Edit on GitHub

Last updated on

On this page