Proxmox VEXXV · Proxmox Datacenter ManagerOperating across clusters
The cross-cluster view: inventory, health, and what is actually live
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
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”.
# proxmox-datacenter-manager-client metric-collection status# one remote
proxmox-datacenter-manager-client metric-collection trigger --remote site-a
# the whole fleet
proxmox-datacenter-manager-client metric-collection triggerThe 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:
| Qualifier | Matches |
|---|---|
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:
| Filter | Selects by |
|---|---|
resource-type | datastore, lxc, node, qemu, sdn-zone, storage |
resource-pool | a PVE resource pool name |
tag | a tag name |
remote | a remote name |
resource | a 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 typeguests— status overview of guests, optionally limited to QEMU or LXCpbs-datastores— usage and status of PBS datastoresremotes— configured remotes and their status, and can offer the add-remote wizardsubscription— subscription status of the remotessdn— status of SDN zonesleaderboard— ranks resources by a metric such as guest or node CPU, or node memory, and lists the top consumerstask-summary— recent tasks grouped by a chosen criterionresource-tree— the selected resources as a hierarchynode-resource-gauge— one node resource as a gauge chartmap— 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:andtype: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
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?
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.
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.
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.