From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id 1E52D1FF13F for ; Thu, 12 Mar 2026 14:53:30 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id AF96C177D7; Thu, 12 Mar 2026 14:53:16 +0100 (CET) From: Lukas Wagner To: pdm-devel@lists.proxmox.com Subject: [PATCH datacenter-manager/proxmox{,-backup,-yew-comp} 00/26] metric collection for the PDM host Date: Thu, 12 Mar 2026 14:52:01 +0100 Message-ID: <20260312135229.420729-1-l.wagner@proxmox.com> X-Mailer: git-send-email 2.47.3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1773323521624 X-SPAM-LEVEL: Spam detection results: 0 AWL -0.103 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment POISEN_SPAM_PILL 0.1 Meta: its spam POISEN_SPAM_PILL_1 0.1 random spam to be learned in bayes POISEN_SPAM_PILL_3 0.1 random spam to be learned in bayes RCVD_IN_MSPIKE_H2 0.001 Average reputation (+2) SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Message-ID-Hash: 2CTLWWTFK2AL5SGVOOWQFVOVBJNMWQNU X-Message-ID-Hash: 2CTLWWTFK2AL5SGVOOWQFVOVBJNMWQNU X-MailFrom: l.wagner@proxmox.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Proxmox Datacenter Manager development discussion List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: This series add metric collection physical PDM hosts. The patches for `proxmox` introduce three new crates: - proxmox-disks: broken out from proxmox-backup, needed to read disk stats - proxmox-parallel-handler: also broken out from proxmox-backup, needed as a dependency for proxmox-disks. Since the scope was manageable, this series improves the existing code a bit by adding a dedicated error type, some documentation and basic unit tests - proxmox-procfs: as a new home for any procfs related modules. this patch series adds a `pressure` module for reading pressure stall information for the host and cgroups. The general idea is that we should move other procfs helpers from proxmox-sys into this new crate, but to avoid scope explosion this is not done as a part of this series The patches for proxmox-backup just switch over to the new moved implementations of proxmox-disks and proxmox-parallel-handler. The patches for proxmox-yew-comp slight adapt the existing NodeStatusPanel to allow the application to inject child components into the same panel. The proxmox-datacenter-manager patches do some initial refactoring (naming), and then add the needed collection loop, API types and UI elements. proxmox: Lukas Wagner (12): sys: procfs: don't read from sysfs during unit tests parallel-handler: import code from Proxmox Backup Server parallel-handler: introduce custom error type parallel-handler: add documentation parallel-handler: add simple unit-test suite disks: import from Proxmox Backup Server disks: fix typo in `initialize_gpt_disk` disks: add parts of gather_disk_stats from PBS disks: gate api macro behind 'api-types' feature disks: clippy: collapse if-let chains where possible procfs: add helpers for querying pressure stall information time: use u64 parse helper from nom Cargo.toml | 10 + proxmox-disks/Cargo.toml | 34 + proxmox-disks/debian/changelog | 5 + proxmox-disks/debian/control | 94 ++ proxmox-disks/debian/copyright | 18 + proxmox-disks/debian/debcargo.toml | 7 + proxmox-disks/src/lib.rs | 1434 +++++++++++++++++ proxmox-disks/src/lvm.rs | 60 + proxmox-disks/src/parse_helpers.rs | 52 + proxmox-disks/src/smart.rs | 228 +++ proxmox-disks/src/zfs.rs | 205 +++ proxmox-disks/src/zpool_list.rs | 294 ++++ proxmox-disks/src/zpool_status.rs | 496 ++++++ proxmox-parallel-handler/Cargo.toml | 16 + proxmox-parallel-handler/debian/changelog | 5 + proxmox-parallel-handler/debian/control | 36 + proxmox-parallel-handler/debian/copyright | 18 + proxmox-parallel-handler/debian/debcargo.toml | 7 + proxmox-parallel-handler/src/lib.rs | 344 ++++ proxmox-procfs/Cargo.toml | 18 + proxmox-procfs/debian/changelog | 5 + proxmox-procfs/debian/control | 50 + proxmox-procfs/debian/copyright | 18 + proxmox-procfs/debian/debcargo.toml | 7 + proxmox-procfs/src/lib.rs | 1 + proxmox-procfs/src/pressure.rs | 334 ++++ proxmox-sys/src/linux/procfs/mod.rs | 30 +- proxmox-time/src/parse_helpers.rs | 5 - proxmox-time/src/time_span.rs | 4 +- 29 files changed, 3818 insertions(+), 17 deletions(-) create mode 100644 proxmox-disks/Cargo.toml create mode 100644 proxmox-disks/debian/changelog create mode 100644 proxmox-disks/debian/control create mode 100644 proxmox-disks/debian/copyright create mode 100644 proxmox-disks/debian/debcargo.toml create mode 100644 proxmox-disks/src/lib.rs create mode 100644 proxmox-disks/src/lvm.rs create mode 100644 proxmox-disks/src/parse_helpers.rs create mode 100644 proxmox-disks/src/smart.rs create mode 100644 proxmox-disks/src/zfs.rs create mode 100644 proxmox-disks/src/zpool_list.rs create mode 100644 proxmox-disks/src/zpool_status.rs create mode 100644 proxmox-parallel-handler/Cargo.toml create mode 100644 proxmox-parallel-handler/debian/changelog create mode 100644 proxmox-parallel-handler/debian/control create mode 100644 proxmox-parallel-handler/debian/copyright create mode 100644 proxmox-parallel-handler/debian/debcargo.toml create mode 100644 proxmox-parallel-handler/src/lib.rs create mode 100644 proxmox-procfs/Cargo.toml create mode 100644 proxmox-procfs/debian/changelog create mode 100644 proxmox-procfs/debian/control create mode 100644 proxmox-procfs/debian/copyright create mode 100644 proxmox-procfs/debian/debcargo.toml create mode 100644 proxmox-procfs/src/lib.rs create mode 100644 proxmox-procfs/src/pressure.rs proxmox-backup: Lukas Wagner (3): tools: move ParallelHandler to new proxmox-parallel-handler crate tools: replace disks module with proxmox-disks metric collection: use blockdev_stat_for_path from proxmox_disks Cargo.toml | 6 + src/api2/admin/datastore.rs | 10 +- src/api2/config/datastore.rs | 2 +- src/api2/node/disks/directory.rs | 10 +- src/api2/node/disks/mod.rs | 20 +- src/api2/node/disks/zfs.rs | 14 +- src/api2/tape/restore.rs | 25 +- src/backup/verify.rs | 3 +- src/bin/proxmox_backup_manager/disk.rs | 9 +- src/server/metric_collection/mod.rs | 50 +- src/server/pull.rs | 5 +- src/tape/pool_writer/new_chunks_iterator.rs | 3 +- src/tools/disks/lvm.rs | 60 - src/tools/disks/mod.rs | 1394 ------------------- src/tools/disks/smart.rs | 227 --- src/tools/disks/zfs.rs | 205 --- src/tools/mod.rs | 3 - src/tools/parallel_handler.rs | 160 --- 18 files changed, 62 insertions(+), 2144 deletions(-) delete mode 100644 src/tools/disks/lvm.rs delete mode 100644 src/tools/disks/mod.rs delete mode 100644 src/tools/disks/smart.rs delete mode 100644 src/tools/disks/zfs.rs delete mode 100644 src/tools/parallel_handler.rs proxmox-yew-comp: Lukas Wagner (3): node status panel: add `children` property RRDGrid: fix size observer by attaching node reference to rendered container RRDGrid: add padding and increase gap between elements src/node_status_panel.rs | 16 ++++++++++++++++ src/rrd_grid.rs | 5 +++-- 2 files changed, 19 insertions(+), 2 deletions(-) proxmox-datacenter-manager: Lukas Wagner (8): metric collection: clarify naming for remote metric collection metric collection: fix minor typo in error message metric collection: collect PDM host metrics in a new collection task api: fix /nodes/localhost/rrddata endpoint pdm: node rrd data: rename 'total-time' to 'metric-collection-total-time' pdm-api-types: add PDM host metric fields ui: node status: add RRD graphs for PDM host metrics ui: lxc/qemu/node: use RRD value render helpers Cargo.toml | 2 + cli/client/src/metric_collection.rs | 4 +- debian/control | 1 + lib/pdm-api-types/src/metric_collection.rs | 2 +- lib/pdm-api-types/src/rrddata.rs | 74 ++++- lib/pdm-client/src/lib.rs | 8 +- server/Cargo.toml | 2 + server/src/api/metric_collection.rs | 10 +- server/src/api/nodes/mod.rs | 2 +- server/src/api/nodes/rrddata.rs | 73 +++- server/src/api/remotes.rs | 2 +- server/src/api/rrd_common.rs | 2 +- .../local_collection_task.rs | 199 +++++++++++ server/src/metric_collection/mod.rs | 40 ++- ...tion_task.rs => remote_collection_task.rs} | 8 +- server/src/metric_collection/rrd_task.rs | 187 ++++++++++- server/src/metric_collection/state.rs | 2 +- ui/src/administration/node_status.rs | 312 +++++++++++++++++- ui/src/pbs/node/overview.rs | 29 +- ui/src/pve/lxc/overview.rs | 34 +- ui/src/pve/node/overview.rs | 29 +- ui/src/pve/qemu/overview.rs | 34 +- ui/src/renderer.rs | 49 +++ 23 files changed, 954 insertions(+), 151 deletions(-) create mode 100644 server/src/metric_collection/local_collection_task.rs rename server/src/metric_collection/{collection_task.rs => remote_collection_task.rs} (99%) Summary over all repositories: 72 files changed, 4853 insertions(+), 2314 deletions(-) -- Generated by murpp 0.10.0