Skip to main content
RunBook Academy

Proxmox VEXXV · Proxmox Datacenter ManagerOperating across clusters

The cross-cluster view: inventory, health, and what is actually live

Intermediate⏱ ~28 minproxmox-datacenter-manager-client

What you'll learn

  • Describe what PDM aggregates: inventory, RRD metrics, tasks, updates, subscriptions, Ceph and SDN state
  • Distinguish collected-and-cached data from actions issued live against a remote
  • Explain why an unreachable remote shows its last-seen state and what that costs during an incident
  • Build a custom View with include and exclude filters, and grant access to it without granting access to the remotes
  • Justify why PDM is not a monitoring system and must not be the thing that pages you

Prerequisites

Verified against Proxmox VE 9.2.4 · Proxmox Backup Server 4.2.5 · Ceph Squid / Tentacle · Debian 13 (Trixie) · Linux kernel 7.0 (PVE 9.2 default) · 2026-08-12

Not yet marked complete on this device.

This is the lesson where PDM earns its keep. Four clusters, six hundred guests, two backup servers, and one page that tells you the state of all of it.

It is also the lesson where a page that looks authoritative can be wrong in a way that only matters once. A dashboard tile reading “42 running” is a fact about something, and knowing which something — the cluster right now, or the last successful collection run, or the last time PDM could reach that remote at all — is the difference between a useful control plane and a confident liar.

What PDM collects

Collecting data is described in the documentation as a primary function of PDM. The material it gathers from each remote is:

  • RRD metrics — the round-robin time series behind every graph and gauge, for nodes, guests, storages and PBS datastores, and since 1.1 for the PDM host itself.
  • Worker task status and logs — which is what makes a cross-estate task log possible.
  • The resource inventory — nodes, VMs, containers, storages, datastores, SDN zones, and their status.
  • Update and repository status — what is pending on every remote.
  • Subscription status — per node, across the fleet.
  • Ceph cluster state — health, capacity, monitors, managers, OSDs, pools, CephFS, flags — for hyper-converged PVE remotes.

That is a substantial amount of information to hold about a fleet, and holding it is what allows the dashboard to answer a question instantly instead of fanning out to twelve clusters every time somebody loads a page.

Holding it is also exactly why the data can be stale.

Collected versus live: the distinction that matters

Draw a line down the middle of PDM’s behaviour.

On the collected side sit the dashboard, the Views and their widgets, the RRD graphs, the cross-remote guest list, the update overview, the subscription status and the aggregated task list. These are served from PDM’s own store, populated by collection runs.

On the live side sit the actions. Starting a guest, shutting one down, taking a snapshot, rolling one back, migrating, opening a shell on a node, applying updates — each of these is an API call issued to the remote at the moment you click, and it either succeeds against the current state of that cluster or it fails.

This produces the single most useful mental model in the whole part:

The last-seen problem

Here is the property that deserves the most attention, because it is deliberate, sensible, and quietly dangerous.

PDM caches the resource list and its usage metrics in order to provide a quick overview — and to provide the last-seen state for offline or unresponsive remotes. That behaviour has been in the product since the first alpha and it is the correct design choice: a remote that is temporarily unreachable should not blank out your entire inventory, and knowing what a cluster looked like before it went away is genuinely useful during an incident.

But it means a screen full of green tiles is not, on its own, evidence that anything is currently up. It is evidence that PDM either collected recently, or could not collect and is showing you what it last saw.

PDM does distinguish the two. Remote status is surfaced on the dashboard and in the remotes widget, the map widget colours its markers by remote status, and a remote whose connection is failing is offered the certificate re-pin dialog directly. The information is there. The failure mode is human: an operator glances at a familiar dashboard, sees the shape they expect, and reads “everything is fine” from a page that was actually saying “here is what I remember”.

Read-only / Safewhen did PDM last actually talk to the fleet
# proxmox-datacenter-manager-client metric-collection status
Configuration changeforce a collection run before you trust the page
# one remote
proxmox-datacenter-manager-client metric-collection trigger --remote site-a

# the whole fleet
proxmox-datacenter-manager-client metric-collection trigger

The guest list

The Guests entry in the sidebar is a single cross-remote list of every QEMU virtual machine and LXC container PDM knows about, collected from all configured PVE remotes.

Two presentations of the same data. List is the default: a flat sortable table with guest name, ID, status, remote, node, tags, CPU usage, memory usage, uptime, and the per-guest actions. Tree groups the guests by remote, each remote a collapsible parent with its guest count, dropping the now-redundant remote column.

The filter box is more capable than it looks. A bare word matches as a substring against every visible column. A term qualified with field:value restricts it to one column, and the supported qualifiers are:

QualifierMatches
tag:a guest tag
remote:the remote name
node:the node name
status:the run status, such as running or stopped
type:the guest type, qemu or lxc

Multiple terms combine with a logical AND, separated by spaces, and matching is case-insensitive. So tag:prod status:running matches only running guests carrying the prod tag, across every cluster. This is the same qualifier syntax as the global search field in the header, so learning it once pays twice.

Note also what the guest list shows: the documentation states that it shows the resources the user may audit. Guests on remotes the operator has no audit privilege on are simply absent — not greyed out, not counted, absent. Two operators looking at “the guest list” may be looking at different fleets, which is a feature for delegation and a trap for a conversation about totals.

Views: dashboards you define

The default dashboard covers everything. Views let you build dashboards that cover something specific, and they are the most under-appreciated feature in the product.

A view selects resources with an include/exclude filter system: you define what to consider for inclusion, and then the exclude list removes types back out again. The documented example is the shape to remember — include all virtual machine resources, then exclude any that reside on a specific remote.

The available filter types:

FilterSelects by
resource-typedatastore, lxc, node, qemu, sdn-zone, storage
resource-poola PVE resource pool name
taga tag name
remotea remote name
resourcea specific resource id

Each filter takes an optional match-behaviour prefix. Currently only exact is available, and it is the default when no prefix is given — so the wildcard syntax you may want is a roadmap item (“wildcards for view filter values”), not a feature.

Views are stored in /etc/proxmox-datacenter-manager/views.cfg with include, exclude, include-all and a JSON-encoded layout, which means they are version-controllable if you want them to be.

The widgets a view can be built from:

  • nodes — status overview of PVE and PBS nodes, optionally limited to one remote type
  • guests — status overview of guests, optionally limited to QEMU or LXC
  • pbs-datastores — usage and status of PBS datastores
  • remotes — configured remotes and their status, and can offer the add-remote wizard
  • subscription — subscription status of the remotes
  • sdn — status of SDN zones
  • leaderboard — ranks resources by a metric such as guest or node CPU, or node memory, and lists the top consumers
  • task-summary — recent tasks grouped by a chosen criterion
  • resource-tree — the selected resources as a hierarchy
  • node-resource-gauge — one node resource as a gauge chart
  • map — remotes plotted on an interactive world map

The map widget has one wrinkle worth knowing before somebody files a bug: the locations come from the remotes and cannot be edited in PDM. Set them on the remote — on PVE as a cluster-wide default in the datacenter options, optionally overridden per node in the node options; on PBS under Configuration, in the Other tab’s Location section. The map background is public-domain vector data from Natural Earth, shipped in the proxmox-geojson-data package, so the widget works without any external service.

The other aggregated panels

Tasks. The Remotes area has a Tasks tab giving an overview of all tasks across the entire datacenter, filterable, and the task viewer can be refreshed for remote tasks. This is the panel that makes an incident timeline assemblable in one place, and it is the strongest single argument for PDM in an estate with more than two clusters.

Updates. A panel across all remotes showing repository status and pending updates, with the ability to apply updates from PDM — which it accomplishes by using the remote shell capability, so it needs PVE 9.1 or PBS 4.1 on the target.

Ceph. One row per detected cluster: health with the number of active health checks in parentheses, name and backing remote, raw capacity and available, a threshold-coloured usage meter, OSD counts phrased as up and in out of total, monitor quorum as in-quorum out of total, and an activity string such as “Near full”, “Degraded” or “Recovering”. Read-only, as Lesson 1 established.

Firewall. A list of configured firewall rules and settings per PVE remote cluster, its nodes and its guests. A view, not an editor.

SDN. A status overview showing available, error or unknown for zones across all remotes, plus cross-remote EVPN configuration.

Key takeaways

  • PDM collects RRD metrics, task status and logs, the resource inventory, update and subscription status, and Ceph and SDN state from every remote.
  • Everything you see is collected and cached; everything you do is issued live against the remote. They agree until they matter.
  • An unreachable remote shows its last-seen state by design. Check remote status before you read resource status.
  • The collection interval is not published. Measure it with metric-collection status, and note that delayed collection tasks are skipped rather than queued.
  • The guest list supports tag:, remote:, node:, status: and type: qualifiers combined with AND — worth exactly as much as your cross-cluster tag discipline.
  • Views can be granted to users who have no access to the underlying remotes. This is the cleanest delegation tool in the product.
  • Cross-cluster capacity aggregates are indicative. PDM 1.1 fixed shared storage being counted several times, and aggregation has more decisions like that in it.
  • PDM cannot alert. Notifications for remotes and for PDM itself are both roadmap items.

Knowledge check

Knowledge check · 4 questions

  1. Q1. A network partition cuts PDM off from the site-B cluster. The cluster itself is healthy and serving guests. Fifteen minutes later an operator opens the PDM dashboard. What do the site-B guest tiles show?

  2. Q2. Which of these operations in PDM go straight to the remote at the moment you invoke them, rather than being served from collected data? Select all that apply.

  3. Q3. Because PDM aggregates health and metrics from every remote, it is a reasonable place to configure the alert that pages the on-call engineer when a cluster becomes unreachable.

  4. Q4. A NOC team must see the health of every cluster but must never be able to act on, or log in to, any of them. Which PDM feature solves this, and on what path is the permission granted?

Passing score: 75%. Answers are checked in this browser.