- // For now this is only required for rgw multi-site metrics
- auto multisite_labels_and_name = add_fixed_name_metrics(counter_name);
- if (!multisite_labels_and_name.first.empty()) {
- labels.insert(multisite_labels_and_name.first.begin(), multisite_labels_and_name.first.end());
- counter_name = multisite_labels_and_name.second;
+ for (auto &counter : counters) {
+ json_object counter_group = counter.value().as_object();
+ if (counter_group["priority"].as_int64() < prio_limit) {
+ continue;
+ }
+ std::string counter_name_init = {counter.key().begin(), counter.key().end()};
+ std::string counter_name = perf_group + "_" + counter_name_init;
+ promethize(counter_name);
+
+ if (counters_labels.empty()) {
+ auto labels_and_name = get_labels_and_metric_name(daemon_name, counter_name);
+ labels = labels_and_name.first;
+ counter_name = labels_and_name.second;
+ }
+ // For now this is only required for rgw multi-site metrics
+ auto multisite_labels_and_name = add_fixed_name_metrics(counter_name);
+ if (!multisite_labels_and_name.first.empty()) {
+ labels.insert(multisite_labels_and_name.first.begin(), multisite_labels_and_name.first.end());
+ counter_name = multisite_labels_and_name.second;
+ }
+ labels.insert({"ceph_daemon", quote(daemon_name)});
+ auto perf_values = counters_values.at(counter_name_init);
+ dump_asok_metric(counter_group, perf_values, counter_name, labels);