]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/telemetry: add pool flags 55067/head
authorYaarit Hatuka <yaarit@redhat.com>
Fri, 5 Jan 2024 17:44:30 +0000 (17:44 +0000)
committerYaarit Hatuka <yaarit@redhat.com>
Fri, 5 Jan 2024 17:44:30 +0000 (17:44 +0000)
Pool flags can help us learn how certain features are being used, for
example, the "crimson" flag implies a crimson cluster.

We add a basic_pool_flags collection to the "basic" channel for this
purpose.

Signed-off-by: Yaarit Hatuka <yaarit@redhat.com>
doc/dev/release-checklists.rst
doc/mgr/telemetry.rst
src/pybind/mgr/telemetry/module.py

index 3a3b2a98cd76a63a34ddeb9e25e3338e34efcbba..f6a4dca39077c9ecc172f1486698145d60e20d83 100644 (file)
@@ -146,6 +146,7 @@ First release candidate
 
 - [ ] src/ceph_release: change type to `rc`
 - [ ] opt-in to all telemetry channels, generate telemetry reports, and verify no sensitive details (like pools names) are collected
+- [ ] check if new pool flags exist in pg_pool_t (osd/osd_types.h), and add them to telemetry's basic_pool_flags collection, in case they are not sensitive
 
 
 First stable release
index 90d45766c15bce3006bd1e15d36296889cde5d55..2d09bb9f3577903f03d65e0db304364cfb415d33 100644 (file)
@@ -186,6 +186,7 @@ List all collections with::
   NAME                            STATUS                                               DESC
   basic_base                      NOT REPORTING: NOT OPTED-IN                          Basic information about the cluster (capacity, number and type of daemons, version, etc.)
   basic_mds_metadata              NOT REPORTING: NOT OPTED-IN                          MDS metadata
+  basic_pool_flags                NOT REPORTING: NOT OPTED-IN                          Per-pool flags
   basic_pool_options_bluestore    NOT REPORTING: NOT OPTED-IN                          Per-pool bluestore config options
   basic_pool_usage                NOT REPORTING: NOT OPTED-IN                          Default pool application and usage statistics
   basic_rook_v01                  NOT REPORTING: NOT OPTED-IN                          Basic Rook deployment data
index f729b9180cfb64538f5f036dc79b8e4fe7bbf4ce..e4e238a88f285d5e03ad190ce2e30461077cd27a 100644 (file)
@@ -71,6 +71,7 @@ class Collection(str, enum.Enum):
     basic_rook_v01 = 'basic_rook_v01'
     perf_memory_metrics = 'perf_memory_metrics'
     basic_pool_options_bluestore = 'basic_pool_options_bluestore'
+    basic_pool_flags = 'basic_pool_flags'
 
 MODULE_COLLECTION : List[Dict] = [
     {
@@ -139,6 +140,12 @@ MODULE_COLLECTION : List[Dict] = [
         "channel": "basic",
         "nag": False
     },
+    {
+        "name": Collection.basic_pool_flags,
+        "description": "Per-pool flags",
+        "channel": "basic",
+        "nag": False
+    },
 ]
 
 ROOK_KEYS_BY_COLLECTION : List[Tuple[str, Collection]] = [
@@ -1109,7 +1116,37 @@ class Module(MgrModule):
                         for option in bluestore_options:
                             if option in pool['options']:
                                 pool_data['options'][option] = pool['options'][option]
+
+                # basic_pool_flags collection
+                if self.is_enabled_collection(Collection.basic_pool_flags):
+                    if 'flags_names' in pool and pool['flags_names'] is not None:
+                        # flags are defined in pg_pool_t (src/osd/osd_types.h)
+                        flags_to_report = [
+                            'hashpspool',
+                            'full',
+                            'ec_overwrites',
+                            'incomplete_clones',
+                            'nodelete',
+                            'nopgchange',
+                            'nosizechange',
+                            'write_fadvise_dontneed',
+                            'noscrub',
+                            'nodeep-scrub',
+                            'full_quota',
+                            'nearfull',
+                            'backfillfull',
+                            'selfmanaged_snaps',
+                            'pool_snaps',
+                            'creating',
+                            'eio',
+                            'bulk',
+                            'crimson',
+                            ]
+
+                        pool_data['flags_names'] = [flag for flag in pool['flags_names'].split(',') if flag in flags_to_report]
+
                 cast(List[Dict[str, Any]], report['pools']).append(pool_data)
+
                 if 'rbd' in pool['application_metadata']:
                     rbd_num_pools += 1
                     ioctx = self.rados.open_ioctx(pool['pool_name'])