Reformat MON to standardized format
[osm/MON.git] / osm_mon / collector / backends / prometheus.py
index 70632a1..a9bb938 100644 (file)
@@ -31,41 +31,44 @@ from osm_mon.collector.metric import Metric
 
 log = logging.getLogger(__name__)
 
-OSM_METRIC_PREFIX = 'osm_'
+OSM_METRIC_PREFIX = "osm_"
 
 
 class PrometheusBackend(BaseBackend):
-
     def __init__(self):
         self.custom_collector = CustomCollector()
         self._start_exporter(8000)
 
     def handle(self, metrics: List[Metric]):
-        prometheus_metrics = []
+        log.debug("handle")
+        log.debug("metrics: %s", metrics)
+        prometheus_metrics = {}
         for metric in metrics:
-            prometheus_metric = GaugeMetricFamily(
-                OSM_METRIC_PREFIX + metric.name,
-                'OSM metric',
-                labels=['ns_id', 'vnf_member_index', 'vdu_name']
+            if metric.name not in prometheus_metrics:
+                prometheus_metrics[metric.name] = GaugeMetricFamily(
+                    OSM_METRIC_PREFIX + metric.name,
+                    "OSM metric",
+                    labels=list(metric.tags.keys()),
+                )
+            prometheus_metrics[metric.name].add_metric(
+                list(metric.tags.values()), metric.value
             )
-            prometheus_metric.add_metric([metric.nsr_id, metric.vnf_member_index, metric.vdur_name], metric.value)
-            prometheus_metrics.append(prometheus_metric)
-        self.custom_collector.metrics = prometheus_metrics
+        self.custom_collector.metrics = prometheus_metrics.values()
 
     def _start_exporter(self, port):
-        log.debug('_start_exporter')
+        log.debug("_start_exporter")
+        log.debug("port: %s", port)
         REGISTRY.register(self.custom_collector)
         log.info("Starting MON Prometheus exporter at port %s", port)
         start_http_server(port)
 
 
 class CustomCollector(object):
-
     def __init__(self):
         self.metrics = []
 
     def describe(self):
-        log.debug('describe')
+        log.debug("describe")
         return []
 
     def collect(self):