From 54336fd622ee2e9ed48008f04796099555f56329 Mon Sep 17 00:00:00 2001 From: Arrelin Date: Wed, 18 Mar 2026 11:05:03 +0300 Subject: [PATCH] Update exporter.py --- exporter.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/exporter.py b/exporter.py index 334b413..03fc141 100644 --- a/exporter.py +++ b/exporter.py @@ -1,6 +1,6 @@ import time import docker -from prometheus_client import start_http_server, Gauge, Counter +from prometheus_client import start_http_server, Gauge, Counter, Info from concurrent.futures import ThreadPoolExecutor client = docker.from_env() @@ -9,6 +9,7 @@ cpu_gauge = Gauge("container_cpu_percent", "CPU usage %", ["name", "container_la mem_gauge = Gauge("container_mem_bytes", "Memory usage bytes", ["name", "container_label_coolify_projectName", "container_label_coolify_serviceName"]) net_rx_counter = Counter("container_net_rx_bytes", "Network RX bytes", ["name", "container_label_coolify_projectName", "container_label_coolify_serviceName"]) net_tx_counter = Counter("container_net_tx_bytes", "Network TX bytes", ["name", "container_label_coolify_projectName", "container_label_coolify_serviceName"]) +ports_info = Gauge("container_ports", "Container exposed ports", ["name", "container_label_coolify_projectName", "container_label_coolify_serviceName", "ports"]) net_rx_prev = {} net_tx_prev = {} @@ -39,6 +40,12 @@ def collect_one(c): net_tx_counter.labels(name, project, service).inc(tx_delta) net_rx_prev[key] = rx net_tx_prev[key] = tx + port_bindings = c.ports + ports_str = ", ".join( + f"{v[0]['HostPort']}->{k}" + for k, v in port_bindings.items() if v + ) or "" + ports_info.labels(name, project, service, ports_str).set(1) except Exception: pass @@ -50,4 +57,4 @@ def collect(): start_http_server(9338) while True: collect() - time.sleep(15) \ No newline at end of file + time.sleep(15)