From: Boris Ranto Date: Tue, 15 May 2018 09:05:22 +0000 (+0200) Subject: mgr_module: Deal with long running avgs properly X-Git-Tag: v12.2.6~13^2~2 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=21b0b376707391fa21460fb5a2cb81f431daedc0;p=ceph.git mgr_module: Deal with long running avgs properly We have recently started exposing long running avgs with the mgr python modules but that only covers the total sum, not the avgcount. With this patch, the counts for long running avgs are exposed to the python modules allowing them to deal with the new data. Signed-off-by: Boris Ranto (cherry picked from commit f79ff11302a0364c04601b5ccd3950d80cd063a8) Conflicts: src/pybind/mgr/mgr_module.py: get_latest is inside get_all_perf_counters, get_latest_avg added, too --- diff --git a/src/pybind/mgr/mgr_module.py b/src/pybind/mgr/mgr_module.py index 933858151ff4..230d6f20b928 100644 --- a/src/pybind/mgr/mgr_module.py +++ b/src/pybind/mgr/mgr_module.py @@ -554,6 +554,13 @@ class MgrModule(ceph_module.BaseMgrModule): else: return 0 + def get_latest_avg(daemon_type, daemon_name, counter): + data = self.get_counter(daemon_type, daemon_name, counter)[counter] + if data: + return (data[-1][1], data[-1][2]) + else: + return (0, 0) + for server in self.list_servers(): for service in server['services']: if service['type'] not in ("rgw", "mds", "osd", "mon"): @@ -579,8 +586,24 @@ class MgrModule(ceph_module.BaseMgrModule): if counter_schema['priority'] < prio_limit: continue - counter_info = counter_schema - counter_info['value'] = get_latest(service['type'], service['id'], counter_path) + counter_info = dict(counter_schema) + + # Also populate count for the long running avgs + if counter_schema['type'] & self.PERFCOUNTER_LONGRUNAVG: + v, c = get_latest_avg( + service['type'], + service['id'], + counter_path + ) + counter_info['value'], counter_info['count'] = v, c + result[svc_full_name][counter_path] = counter_info + else: + counter_info['value'] = get_latest( + service['type'], + service['id'], + counter_path + ) + result[svc_full_name][counter_path] = counter_info self.log.debug("returning {0} counter".format(len(result)))