From 68ceafcc2ad67a734dfbf2473643fc708cdf9223 Mon Sep 17 00:00:00 2001 From: Ankush Behl Date: Tue, 5 Aug 2025 19:05:22 +0530 Subject: [PATCH] prometheus: Add RBD image metadata to prometheus Fixes: https://tracker.ceph.com/issues/72421 Signed-off-by: Ankush Behl (cherry picked from commit 45db5f38b0abfec49d9f8904d67dbcccb846393f) --- src/pybind/mgr/prometheus/module.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/pybind/mgr/prometheus/module.py b/src/pybind/mgr/prometheus/module.py index 4eaf2cd286cac..a1c6644f1e26f 100644 --- a/src/pybind/mgr/prometheus/module.py +++ b/src/pybind/mgr/prometheus/module.py @@ -105,6 +105,8 @@ RGW_METADATA = ('ceph_daemon', 'hostname', 'ceph_version', 'instance_id') RBD_MIRROR_METADATA = ('ceph_daemon', 'id', 'instance_id', 'hostname', 'ceph_version') +RBD_IMAGE_METADATA = ('pool_id', 'image_name') + DISK_OCCUPATION = ('ceph_daemon', 'device', 'db_device', 'wal_device', 'instance', 'devices', 'device_ids') @@ -757,6 +759,13 @@ class Module(MgrModule, OrchestratorClientMixin): RBD_MIRROR_METADATA ) + metrics['rbd_image_metadata'] = Metric( + 'untyped', + 'rbd_image_metadata', + 'RBD Image Metadata', + RBD_IMAGE_METADATA + ) + metrics['pg_total'] = Metric( 'gauge', 'pg_total', @@ -1350,6 +1359,20 @@ class Module(MgrModule, OrchestratorClientMixin): self.metrics['rbd_mirror_metadata'].set( 1, rbd_mirror_metadata ) + try: + rbd = RBD() + for pool in osd_map['pools']: + pool_id = pool['pool'] + pool_name = pool['pool_name'] + if 'rbd' in pool.get('application_metadata', {}): + with self.rados.open_ioctx(pool_name) as ioctx: + for image_meta in rbd.list2(ioctx): + image_name = image_meta['name'] + self.metrics['rbd_image_metadata'].set( + 1, (str(pool_id), image_name) + ) + except Exception as e: + self.log.error(f"Failed to collect RBD image metadata: {e}") @profile_method() def get_num_objects(self) -> None: -- 2.39.5