diff --git a/owrx/controllers/metrics.py b/owrx/controllers/metrics.py index e817e9b..d4a6105 100644 --- a/owrx/controllers/metrics.py +++ b/owrx/controllers/metrics.py @@ -1,9 +1,24 @@ from . import Controller -from owrx.metrics import Metrics -import json +from owrx.metrics import CounterMetric, DirectMetric, Metrics class MetricsController(Controller): def indexAction(self): - data = json.dumps(Metrics.getSharedInstance().getMetrics()) - self.send_response(data, content_type="application/json") + metrics = Metrics.getSharedInstance().metrics + + data = "# https://prometheus.io/docs/instrumenting/exposition_formats/\n" + for key,metric in metrics.items(): + + value = -1 + + if isinstance(metric, CounterMetric): + key += "_total" + value = metric.getValue()["count"] + elif isinstance(metric, DirectMetric): + value = metric.getValue() + else: + raise ValueError("Unexpected metric type for metric %s" % repr(metric)) + + data += "%s %s\n" % (key.replace(".", "_"), value) + + self.send_response(data, content_type="text/plain; version=0.0.4")