Docker Manager

Metrics

Charts of each server's and container's CPU, memory, network and disk activity, how much data they moved over a time span, and each server's disk space, I/O wait, swap, load and temperatures.

Docker Manager reads every server and its containers every second and keeps every reading for 90 days by default. The charts show how busy a server is and which containers use it. A server that runs hot or low on disk space or memory raises an alert.

See a server's charts

  1. Open Environments and pick an environment.
  2. On its Overview tab, the Metrics card shows CPU, I/O Wait, Memory, a Disk Capacity chart for each filesystem (titled by the drive's model or the array's name, e.g. Disk Capacity · Samsung SSD 990 PRO 2 TB, with its /dev/sda2 and total space below), a Disk I/O chart for each physical disk (titled by the drive's model, with its /dev node below), Network (received and sent), Swap, Load and Temperature.
  3. Pick the time span in the card's menu, from Last 1 Hour to Last 90 Days.

Each point is the average of the readings in its span, and a faint band above the line reaches the highest single reading of that span, so a short spike shows at any time span. Hover a chart (on a phone, tap it) to see the point's time, its span (for example 1 min) and avg and peak. The figure next to a chart's title is the newest reading, marked now; when the server is offline it shows when that reading was taken. Shaded spans have no data: the server was offline or not reporting.

The CPU and memory figures across the app (the Dashboard, the Environments list, a server's, stack's or container's page) are the newest reading: while the app is open, a second or two old. A figure older than a minute says when it was read, for example as of Oct 28, 12:05, measured by Docker Manager's clock, so a wrong clock on your computer doesn't change it. The Dashboard's CPU in Use and Memory in Use count only servers that are online and have a current reading, and Containers Running only servers that are online; CPU in Use counts each server by its number of CPUs, so a large server weighs more than a small one. A container's page shows its newest reading while there is one, and Not Running once a stopped container has none.

The Disk figure on the Overview shows Docker's data disk, with its model or array name and /dev node under the value; the Disks card lists the other filesystems.

The Memory chart stacks Used and Cache / Buffers. Used is the memory the server reports as not available, so it leaves out the cache, which the server frees when it needs the memory. On servers with ZFS, a dashed ZFS ARC (in Used) line shows the size of ZFS's cache: the server counts it within Used, although ZFS gives most of it back when memory runs short. The memory figure counts Used; the memory alert counts the part of the ZFS cache that ZFS can give back as free, so cache alone never raises it.

A Disk Capacity chart counts like df: the space a filesystem keeps for the administrator (5% by default on ext4) counts neither as used nor in the total, so a disk that is full for your programs shows 100%. Its alert uses the same percentage.

A Disk I/O chart shows the bytes read and written by that one drive; a software RAID's members each get their own chart (their traffic is not added up again on the array). The line under its title names the /dev node, so two drives of the same model stay apart. A hardware RAID controller shows only the logical disk it presents.

I/O Wait is the share of CPU time spent waiting for the disks; a high value means the disks are the bottleneck.

The Temperature chart draws one line per sensor of the server (for example coretemp: Package id 0 for the CPU or nvme: Composite for an NVMe drive), each in its own color. Its headline is the hottest sensor's latest reading. A drive's sensors carry the drive's model and a short code, such as nvme Samsung SSD 990 PRO 2TB 3fa2c1: Composite, so a line stays with its drive after a restart or when you add drives.

Docker Manager doesn't wake sleeping disks. The sensor of a SATA disk (also behind a SAS controller) is read only while the disk is busy, so an idle disk can spin down; until then its line has a gap and the chart says idle disks not read. A SATA sensor the agent can't match to its disk isn't read at all, and the chart says some drive sensors not read. The Disk Health card on the System tab shows a disk's temperature from each disk check that finds it awake.

With the agent set up as in the Quickstart, the Network chart counts the server's physical network ports, so traffic that also passes a bridge or bond (such as Unraid's br0) is counted once.

Zoom in

  1. Drag across any chart with the mouse over the moment you want to see. Every chart of the card, the container charts included, shows that window.
  2. Or open the Zoom menu next to the time span and pick Zoom In (around the moment you last pointed at or tapped) or Zoom Out.
  3. Press Back to Last 1 Hour (or the time span you picked) to return.

A zoomed window shows up to 1,000 points (the container charts about 60), down to one point per second; the line above the charts names the window, and hovering a point shows how long it spans. You can zoom anywhere within the last 90 days of kept history.

Read every second

The agent reads every second when it runs with cgroup: host and pid: host, as in the Quickstart files. Without them, the charts say Readings Every 10 s. To add them:

  1. Open Stacks and the server's docker-manager stack, then its Files tab.

  2. In compose.yaml, add two lines to the docker-agent service:

    compose.yaml
    services:
      docker-agent:
        # ...keep the existing lines...
        cgroup: host
        pid: host
  3. Save the file and press Deploy.

If you haven't imported Docker Manager's project yet, edit the compose.yaml on the server and run docker compose up -d there. An agent you started with the single command needs --cgroupns host --pid host instead; set it up with Compose to change it from the app.

These lines let the agent see the server's processes and container groups, so it can read each container directly; with them, the Network chart shows the whole server's traffic. On a server that runs the older cgroup v1, the agent can't read every second; the charts say so.

Show more disks

Docker Manager always charts Docker's data disk and the stacks disk. To chart another disk, mount it read-only into that server's agent:

  1. Open Stacks and the server's docker-manager stack, then its Files tab.

  2. In compose.yaml, add a read-only volume for each disk under /disks/<name> to the docker-agent service — the name is yours:

    compose.yaml
    services:
      docker-agent:
        # ...keep the existing lines...
        volumes:
          # ...keep the existing volumes...
          - /mnt/media:/disks/Media:ro
          - /srv/backup:/disks/Backup:ro
  3. Save the file and press Deploy.

If you haven't imported Docker Manager's project yet, edit the compose.yaml on the server and run docker compose up -d there.

One Disk Capacity chart appears per filesystem, not per mount: a RAID array mounted once shows once. Keep the folder name after /disks/ the same to keep the chart's history; renaming it starts a new one. The charts show the drive's or array's name and /dev node, never the server's folder paths.

See container charts

Under Containers, Docker CPU, Docker Memory, Docker Network and Docker Disk I/O show the 50 largest containers of the time span, each in its own color, the largest on top. All other containers are added up as Other, in gray at the bottom, so the stacked total is still everything the server's containers used. Network and disk I/O add up both directions. To see only some containers, type part of their names (several separated by spaces) in Filter by name: the charts then show only the matching containers, the 50 largest of them on their own and the rest as Other.

Hover a chart to see the values at that moment, largest or hottest first: the 25 largest, the smaller ones added up in one row (for example +15 more), and Other with how many containers it adds up last. Click the chart to pin that moment: every container is listed beside it in a list you can scroll. Point at a row to pick that container out on the chart. Click elsewhere on the chart to move the pin; press Escape, click Close or click outside the chart to close the list. On a phone, tap the chart to see the list under it.

Each point averages its time span: a container that ran for only part of it counts for that part, so the stacked total is exactly what the server's containers used together. Turn on Show peaks in the list to also see what such a container used while it ran (while running) and each container's highest reading in the span as peak (for network and disk I/O, per direction); Other shows the highest of any one of its containers as highest. The charts show no peak of the stacked total: the containers' peaks rarely fall in the same second, so adding them up would overstate it. The figure next to each title is the total of the containers' newest readings, marked now.

A container's own page shows its CPU and Memory in the Usage card, for the Last Hour, Last 6 Hours or Last 24 Hours, with the same peak band and zoom.

See how much data a server and its containers moved

The charts also show how much data moved over the card's time span (for example Last 7 Days, or the window you zoomed to). Changing the span or zooming updates the figures with the charts.

  1. Pick the time span in the card's menu.
  2. Under the Network chart, read how much the server received and sent; under each Disk I/O chart, how much that disk read and wrote.
  3. Under Containers, next to Docker Network, Docker Network Totals lists what each container received and sent and its total, and next to Docker Disk I/O, Docker Disk I/O Totals what each read and wrote. The largest comes first, in its color on the chart, with Other last; press Show All to see every row.
  4. Point at a row (on a phone, tap it) to pick that container out on the chart; tap it again to let go. Filter by name narrows the lists like the charts.

Each figure is what the readings measured, so a container that ran for five minutes in that span counts those five minutes. When the server was offline, or the span reaches past the kept history, the figures say Partly covered, and their (i) says for how long the readings cover it; an unknown figure shows —, never 0.

The server's figure counts its physical network ports; each container's counts its own network. Traffic between containers on the same server counts for the containers but never leaves the server, and containers that use the server's or another container's network (network_mode: host, network_mode: service:…) have no figure of their own, so the containers' figures don't add up to the server's.

Good to know:

  • The Swap chart appears only when the server has swap, and the Temperature chart only when the agent can read temperature sensors during the chosen time span.
  • A reading carries at most 32 temperature sensors, 32 filesystems and 64 disks. A server with more says Some Sensors and Disks Not Charted. Each chip's first sensor comes before any chip's second, so many CPU cores don't push out the drives.
  • The Disk Capacity chart appears only for filesystems the agent can see; add a read-only mount under /disks (above) for any other disk. The Disk I/O charts cover every physical disk the server exposes, whether or not its filesystem is charted.
  • An agent too old to measure CPU, network and disk I/O the way the charts need leaves them empty: CPU, Network, Disk I/O, Docker CPU, Docker Network and Docker Disk I/O say Upgrade the agent to see this chart. Memory, disk space, load and temperatures still show. Upgrade the agent to fill them.
  • A disk that reports no model is named by its /dev node. Drive letters can change when disks are added; a Disk I/O chart follows the drive's serial when it reports one, while a Disk Capacity chart follows its mount point.
  • Disk space alerts name the drive or array and its /dev node, for example Samsung SSD 990 PRO 2 TB (/dev/sda2) is almost full.
  • The charts include only the containers whose metrics you may see.
  • A stack's CPU Usage figure draws the last hour of all the stack's containers, also replicas removed during that hour, one point per minute. Its CPU and memory figures add up the containers' values of one reading; when running containers whose metrics you may see are missing from that reading, the figure says how many, for example 1 container not read.
  • There is no storage chart per container, since several containers can share a volume.
  • Without pid: host the Network chart shows only the agent's own traffic (see Read every second); the line under it then says Only the agent's own traffic.
  • Every reading is kept for 90 days by default. To keep more or less, see Configuration.

On this page