]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
prometheus: Add RBD image metadata to prometheus 65148/head
authorAnkush Behl <cloudbehl@gmail.com>
Tue, 5 Aug 2025 13:35:22 +0000 (19:05 +0530)
committerAnkush Behl <cloudbehl@gmail.com>
Wed, 20 Aug 2025 09:50:25 +0000 (15:20 +0530)
Fixes: https://tracker.ceph.com/issues/72421
Signed-off-by: Ankush Behl <cloudbehl@gmail.com>
(cherry picked from commit 45db5f38b0abfec49d9f8904d67dbcccb846393f)

src/pybind/mgr/prometheus/module.py

index 4eaf2cd286cac1967c3b914b0ba9898c409d28b2..a1c6644f1e26f6d8891c4a7c9f3930aacdc74969 100644 (file)
@@ -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: