]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/telemetry: add separate channels
authorSage Weil <sage@redhat.com>
Mon, 1 Jul 2019 15:32:59 +0000 (10:32 -0500)
committerJoao Eduardo Luis <joao@suse.com>
Mon, 9 Dec 2019 19:36:54 +0000 (19:36 +0000)
'basic' is the basic cluster stats (version, size, etc)
'crash' is the crash dumps.

By default these are both on, but they can be selectively enabled or
disabled.

New channels will follow.

Signed-off-by: Sage Weil <sage@redhat.com>
(cherry picked from commit f3a3ccb52fa5a7b24f8d11138b5b51345865547e)

Conflicts:
src/pybind/mgr/telemetry/module.py
          Don't backport code related to the 'crash' module, and adjust
          how we read option variables (luminous goes through a config
          map, instead of master's that goes through class attributes)

src/pybind/mgr/telemetry/module.py

index dba4b5ededd502b54154c67a8c3d7a683c84639d..679fe27b6c758f1799f5d81f597c8442a135ec9d 100644 (file)
@@ -63,7 +63,13 @@ class Module(MgrModule):
         {
             'name': 'interval',
             'default': 24
-        }
+        },
+        {
+            'name': 'channel_basic',
+            'type': 'bool',
+            'default': True,
+            'description': 'Share basic cluster information (size, version)',
+        },
     ]
 
     COMMANDS = [
@@ -215,11 +221,19 @@ class Module(MgrModule):
 
         return metadata
 
+    def get_active_channels(self):
+        r = []
+        if self.config['channel_basic']:
+            r.append('basic')
+        return r
+
     def compile_report(self):
         report = {
             'leaderboard': False,
             'report_version': 1,
-            'report_timestamp': datetime.utcnow().isoformat()
+            'report_timestamp': datetime.utcnow().isoformat(),
+            'report_id': self.report_id,
+            'channels': self.get_active_channels(),
         }
 
         if self.str_to_bool(self.config['leaderboard']):
@@ -228,61 +242,61 @@ class Module(MgrModule):
         for option in ['description', 'contact', 'organization']:
             report[option] = self.config.get(option, None)
 
-        mon_map = self.get('mon_map')
-        osd_map = self.get('osd_map')
-        service_map = self.get('service_map')
-        fs_map = self.get('fs_map')
-        df = self.get('df')
-
-        report['report_id'] = self.report_id
-        report['created'] = mon_map['created']
-
-        report['mon'] = {
-            'count': len(mon_map['mons']),
-            'features': mon_map['features']
-        }
-
-        num_pg = 0
-        report['pools'] = list()
-        for pool in osd_map['pools']:
-            num_pg += pool['pg_num']
-            report['pools'].append(
-                {
-                    'pool': pool['pool'],
-                    'type': pool['type'],
-                    'pg_num': pool['pg_num'],
-                    'pgp_num': pool['pg_placement_num'],
-                    'size': pool['size'],
-                    'min_size': pool['min_size'],
-                    'crush_rule': pool['crush_rule']
-                }
-            )
-
-        report['osd'] = {
-            'count': len(osd_map['osds']),
-            'require_osd_release': osd_map['require_osd_release'],
-            'require_min_compat_client': osd_map['require_min_compat_client']
-        }
-
-        report['fs'] = {
-            'count': len(fs_map['filesystems'])
-        }
-
-        report['metadata'] = dict()
-        report['metadata']['osd'] = self.gather_osd_metadata(osd_map)
-        report['metadata']['mon'] = self.gather_mon_metadata(mon_map)
-
-        report['usage'] = {
-            'pools': len(df['pools']),
-            'pg_num:': num_pg,
-            'total_used_bytes': df['stats']['total_used_bytes'],
-            'total_bytes': df['stats']['total_bytes'],
-            'total_avail_bytes': df['stats']['total_avail_bytes']
-        }
-
-        report['services'] = defaultdict(int)
-        for key, value in service_map['services'].items():
-            report['services'][key] += 1
+        if self.config['channel_basic']:
+            mon_map = self.get('mon_map')
+            osd_map = self.get('osd_map')
+            service_map = self.get('service_map')
+            fs_map = self.get('fs_map')
+            df = self.get('df')
+
+            report['created'] = mon_map['created']
+
+            report['mon'] = {
+                'count': len(mon_map['mons']),
+                'features': mon_map['features']
+            }
+
+            num_pg = 0
+            report['pools'] = list()
+            for pool in osd_map['pools']:
+                num_pg += pool['pg_num']
+                report['pools'].append(
+                    {
+                        'pool': pool['pool'],
+                        'type': pool['type'],
+                        'pg_num': pool['pg_num'],
+                        'pgp_num': pool['pg_placement_num'],
+                        'size': pool['size'],
+                        'min_size': pool['min_size'],
+                        'crush_rule': pool['crush_rule']
+                    }
+                )
+
+            report['osd'] = {
+                'count': len(osd_map['osds']),
+                'require_osd_release': osd_map['require_osd_release'],
+                'require_min_compat_client': osd_map['require_min_compat_client']
+            }
+
+            report['fs'] = {
+                'count': len(fs_map['filesystems'])
+            }
+
+            report['metadata'] = dict()
+            report['metadata']['osd'] = self.gather_osd_metadata(osd_map)
+            report['metadata']['mon'] = self.gather_mon_metadata(mon_map)
+
+            report['usage'] = {
+                'pools': len(df['pools']),
+                'pg_num:': num_pg,
+                'total_used_bytes': df['stats']['total_used_bytes'],
+                'total_bytes': df['stats']['total_bytes'],
+                'total_avail_bytes': df['stats']['total_avail_bytes']
+            }
+
+            report['services'] = defaultdict(int)
+            for key, value in service_map['services'].items():
+                report['services'][key] += 1
 
         return report