diff --git a/docker-compose/tango-prometheus-exporter/code/tango-prometheus-client.py b/docker-compose/tango-prometheus-exporter/code/tango-prometheus-client.py index 1483ca3bc21936828eb349c1ffdd483b74d65bbd..28a8404154aa1f2e64375de7696253ab789db7cc 100644 --- a/docker-compose/tango-prometheus-exporter/code/tango-prometheus-client.py +++ b/docker-compose/tango-prometheus-exporter/code/tango-prometheus-client.py @@ -100,10 +100,14 @@ class CustomCollector(object): return ([dev.dev_name(), attr_info.name, str_value, data_type, f"{x:02}", f"{y:02}"], float_value) def metrics_scalar(self, dev, attr_info, attr_value): + """ Return all metrics for a given SCALAR attribute. """ + new_metric = self._to_metric(dev, attr_info, 0, 0, attr_value.value) return [new_metric] if new_metric else [] def metrics_spectrum(self, dev, attr_info, attr_value): + """ Return all metrics for a given SPECTRUM attribute. """ + metrics = [] for x in range(int(attr_value.dim_x)): new_metric = self._to_metric(dev, attr_info, x, 0, attr_value.value[x]) @@ -112,6 +116,8 @@ class CustomCollector(object): return metrics def metrics_image(self, dev, attr_info, attr_value): + """ Return all metrics for a given IMAGE attribute. """ + metrics = [] for y in range(int(attr_value.dim_y)): for x in range(int(attr_value.dim_x)): @@ -124,6 +130,8 @@ class CustomCollector(object): return metrics def metrics(self, dev, attr_info, attr_value): + """ Return all metrics for a given attribute. """ + if attr_info.data_format == AttrDataFormat.SCALAR: return self.metrics_scalar(dev, attr_info, attr_value) elif attr_info.data_format == AttrDataFormat.SPECTRUM: @@ -134,6 +142,8 @@ class CustomCollector(object): return [] def device_metrics(self, device_name): + """ Return all metrics for a given device, as configured. """ + dev = DeviceProxy(device_name) dev.set_timeout_millis(self.proxy_timeout) @@ -167,7 +177,7 @@ class CustomCollector(object): return metrics def collect(self): - """ Yield all scraped metrics. """ + """ Yield all scraped metrics from all devices, as configured. """ logger.info("Start scraping") scrape_begin = time.time() @@ -207,13 +217,14 @@ if __name__ == '__main__': parser = argparse.ArgumentParser() parser.add_argument('-c', '--config', type=str, required=True, help='configuration file') parser.add_argument('-t', '--timeout', type=int, required=False, default=250, help='device proxy timeout (ms)') + parser.add_argument('-p', '--port', type=int, required=False, default=8000, help='HTTP server port to open') args = parser.parse_args() config = ArchiverPolicy.load_config(args.config) collector = CustomCollector(config, proxy_timeout=args.timeout) logger.info("Starting server") - start_http_server(8000) + start_http_server(args.port) logger.info("Registering collector") REGISTRY.register(collector)