From 4e89ce7e72095548dbbbfe470aa9ec2e8947535c Mon Sep 17 00:00:00 2001 From: Pere Diaz Bou Date: Tue, 18 Apr 2023 10:47:13 +0200 Subject: [PATCH] mgr/prometheus: rename get_unlabeled_perf_counters, no send labeled pc Signed-off-by: Pere Diaz Bou --- src/mgr/MgrClient.cc | 35 +++++++++++-------- src/msg/async/Stack.h | 2 +- .../dashboard/controllers/perf_counters.py | 2 +- src/pybind/mgr/influx/module.py | 2 +- src/pybind/mgr/mgr_module.py | 2 +- src/pybind/mgr/prometheus/module.py | 2 +- src/pybind/mgr/restful/api/perf.py | 2 +- src/pybind/mgr/telegraf/module.py | 2 +- src/pybind/mgr/telemetry/module.py | 22 ++++++------ 9 files changed, 39 insertions(+), 32 deletions(-) diff --git a/src/mgr/MgrClient.cc b/src/mgr/MgrClient.cc index 6253d26703433..6250ea3b9f18e 100644 --- a/src/mgr/MgrClient.cc +++ b/src/mgr/MgrClient.cc @@ -14,6 +14,7 @@ #include "MgrClient.h" +#include "common/perf_counters_key.h" #include "mgr/MgrContext.h" #include "mon/MonMap.h" @@ -331,6 +332,12 @@ void MgrClient::_send_report() const PerfCounters::perf_counter_data_any_d &ctr, const PerfCounters &perf_counters) { + // FIXME: We don't send labeled perf counters to the mgr currently. + auto labels = ceph::perf_counters::key_labels(perf_counters.get_name()); + if (labels.begin() != labels.end()) { + return false; + } + return perf_counters.get_adjusted_priority(ctr.prio) >= (int)stats_threshold; }; @@ -367,20 +374,20 @@ void MgrClient::_send_report() } if (session->declared.count(path) == 0) { - ldout(cct,20) << " declare " << path << dendl; - PerfCounterType type; - type.path = path; - if (data.description) { - type.description = data.description; - } - if (data.nick) { - type.nick = data.nick; - } - type.type = data.type; - type.priority = perf_counters.get_adjusted_priority(data.prio); - type.unit = data.unit; - report->declare_types.push_back(std::move(type)); - session->declared.insert(path); + ldout(cct, 20) << " declare " << path << dendl; + PerfCounterType type; + type.path = path; + if (data.description) { + type.description = data.description; + } + if (data.nick) { + type.nick = data.nick; + } + type.type = data.type; + type.priority = perf_counters.get_adjusted_priority(data.prio); + type.unit = data.unit; + report->declare_types.push_back(std::move(type)); + session->declared.insert(path); } encode(static_cast(data.u64), report->packed); diff --git a/src/msg/async/Stack.h b/src/msg/async/Stack.h index e19b6c89ce790..6739968f4e2b7 100644 --- a/src/msg/async/Stack.h +++ b/src/msg/async/Stack.h @@ -276,7 +276,7 @@ class Worker { // Add labeled perfcounters std::string labels = ceph::perf_counters::key_create( - name_prefix, {{"id", std::to_string(id)}}); + name_prefix, {{"id", std::to_string(id)}}); PerfCountersBuilder plb_labeled( cct, labels, l_msgr_labeled_first, l_msgr_labeled_last); diff --git a/src/pybind/mgr/dashboard/controllers/perf_counters.py b/src/pybind/mgr/dashboard/controllers/perf_counters.py index 0bd8833669371..ab0bdcb0b32b9 100644 --- a/src/pybind/mgr/dashboard/controllers/perf_counters.py +++ b/src/pybind/mgr/dashboard/controllers/perf_counters.py @@ -79,4 +79,4 @@ class PerfCounters(RESTController): @EndpointDoc("Display Perf Counters", responses={200: PERF_SCHEMA}) def list(self): - return mgr.get_all_perf_counters() + return mgr.get_unlabeled_perf_counters() diff --git a/src/pybind/mgr/influx/module.py b/src/pybind/mgr/influx/module.py index f88261b20b14b..6818783b341a8 100644 --- a/src/pybind/mgr/influx/module.py +++ b/src/pybind/mgr/influx/module.py @@ -253,7 +253,7 @@ class Module(MgrModule): } def get_daemon_stats(self, now: str) -> Iterator[Dict[str, Any]]: - for daemon, counters in self.get_all_perf_counters().items(): + for daemon, counters in self.get_unlabeled_perf_counters().items(): svc_type, svc_id = daemon.split(".", 1) metadata = self.get_metadata(svc_type, svc_id) if metadata is not None: diff --git a/src/pybind/mgr/mgr_module.py b/src/pybind/mgr/mgr_module.py index 2fabbae87c52e..f7d0eb0f54402 100644 --- a/src/pybind/mgr/mgr_module.py +++ b/src/pybind/mgr/mgr_module.py @@ -2022,7 +2022,7 @@ class MgrModule(ceph_module.BaseMgrModule, MgrModuleLoggingMixin): @API.expose @profile_method() - def get_all_perf_counters(self, prio_limit: int = PRIO_USEFUL, + def get_unlabeled_perf_counters(self, prio_limit: int = PRIO_USEFUL, services: Sequence[str] = ("mds", "mon", "osd", "rbd-mirror", "rgw", "tcmu-runner")) -> Dict[str, dict]: diff --git a/src/pybind/mgr/prometheus/module.py b/src/pybind/mgr/prometheus/module.py index b2637bda3e6a1..ee0607f23fd9d 100644 --- a/src/pybind/mgr/prometheus/module.py +++ b/src/pybind/mgr/prometheus/module.py @@ -1632,7 +1632,7 @@ class Module(MgrModule): """ Get the perf counters for all daemons """ - for daemon, counters in self.get_all_perf_counters().items(): + for daemon, counters in self.get_unlabeled_perf_counters().items(): for path, counter_info in counters.items(): # Skip histograms, they are represented by long running avgs stattype = self._stattype_to_str(counter_info['type']) diff --git a/src/pybind/mgr/restful/api/perf.py b/src/pybind/mgr/restful/api/perf.py index 4224599f66995..c484ac55e445f 100644 --- a/src/pybind/mgr/restful/api/perf.py +++ b/src/pybind/mgr/restful/api/perf.py @@ -18,7 +18,7 @@ class Perf(RestController): - 'daemon' -- filter by daemon, accepts Python regexp """ - counters = context.instance.get_all_perf_counters() + counters = context.instance.get_unlabeled_perf_counters() if 'daemon' in kwargs: _re = re.compile(kwargs['daemon']) diff --git a/src/pybind/mgr/telegraf/module.py b/src/pybind/mgr/telegraf/module.py index f640f1d3a0fd8..541ddba4f0737 100644 --- a/src/pybind/mgr/telegraf/module.py +++ b/src/pybind/mgr/telegraf/module.py @@ -72,7 +72,7 @@ class Module(MgrModule): } def get_daemon_stats(self) -> Iterable[Dict[str, Any]]: - for daemon, counters in self.get_all_perf_counters().items(): + for daemon, counters in self.get_unlabeled_perf_counters().items(): svc_type, svc_id = daemon.split('.', 1) metadata = self.get_metadata(svc_type, svc_id) if not metadata: diff --git a/src/pybind/mgr/telemetry/module.py b/src/pybind/mgr/telemetry/module.py index cd431a2e1cc69..f729b9180cfb6 100644 --- a/src/pybind/mgr/telemetry/module.py +++ b/src/pybind/mgr/telemetry/module.py @@ -794,7 +794,7 @@ class Module(MgrModule): return crashlist def gather_perf_counters(self, mode: str = 'separated') -> Dict[str, dict]: - # Extract perf counter data with get_all_perf_counters(), a method + # Extract perf counter data with get_unlabeled_perf_counters(), a method # from mgr/mgr_module.py. This method returns a nested dictionary that # looks a lot like perf schema, except with some additional fields. # @@ -810,7 +810,7 @@ class Module(MgrModule): # "value": 88814109 # }, # }, - all_perf_counters = self.get_all_perf_counters() + perf_counters = self.get_unlabeled_perf_counters() # Initialize 'result' dict result: Dict[str, dict] = defaultdict(lambda: defaultdict( @@ -819,7 +819,7 @@ class Module(MgrModule): # 'separated' mode anonymized_daemon_dict = {} - for daemon, all_perf_counters_by_daemon in all_perf_counters.items(): + for daemon, perf_counters_by_daemon in perf_counters.items(): daemon_type = daemon[0:3] # i.e. 'mds', 'osd', 'rgw' if mode == 'separated': @@ -836,7 +836,7 @@ class Module(MgrModule): else: result[daemon_type]['num_combined_daemons'] += 1 - for collection in all_perf_counters_by_daemon: + for collection in perf_counters_by_daemon: # Split the collection to avoid redundancy in final report; i.e.: # bluestore.kv_flush_lat, bluestore.kv_final_lat --> # bluestore: kv_flush_lat, kv_final_lat @@ -856,12 +856,12 @@ class Module(MgrModule): if mode == 'separated': # Add value to result result[daemon][col_0][col_1]['value'] = \ - all_perf_counters_by_daemon[collection]['value'] + perf_counters_by_daemon[collection]['value'] # Check that 'count' exists, as not all counters have a count field. - if 'count' in all_perf_counters_by_daemon[collection]: + if 'count' in perf_counters_by_daemon[collection]: result[daemon][col_0][col_1]['count'] = \ - all_perf_counters_by_daemon[collection]['count'] + perf_counters_by_daemon[collection]['count'] elif mode == 'aggregated': # Not every rgw daemon has the same schema. Specifically, each rgw daemon # has a uniquely-named collection that starts off identically (i.e. @@ -875,14 +875,14 @@ class Module(MgrModule): # the files are of type 'pair' (real-integer-pair, integer-integer pair). # In those cases, the value is a dictionary, and not a number. # i.e. throttle-msgr_dispatch_throttler-hbserver["wait"] - if isinstance(all_perf_counters_by_daemon[collection]['value'], numbers.Number): + if isinstance(perf_counters_by_daemon[collection]['value'], numbers.Number): result[daemon_type][col_0][col_1]['value'] += \ - all_perf_counters_by_daemon[collection]['value'] + perf_counters_by_daemon[collection]['value'] # Check that 'count' exists, as not all counters have a count field. - if 'count' in all_perf_counters_by_daemon[collection]: + if 'count' in perf_counters_by_daemon[collection]: result[daemon_type][col_0][col_1]['count'] += \ - all_perf_counters_by_daemon[collection]['count'] + perf_counters_by_daemon[collection]['count'] else: self.log.error('Incorrect mode specified in gather_perf_counters: {}'.format(mode)) return {} -- 2.47.3