diff --git a/exporter.py b/exporter.py index 8c7f763..570c4d9 100644 --- a/exporter.py +++ b/exporter.py @@ -4,10 +4,10 @@ from prometheus_client import start_http_server, Gauge client = docker.from_env() -cpu_gauge = Gauge("container_cpu_percent", "CPU usage %", ["name"]) -mem_gauge = Gauge("container_mem_bytes", "Memory usage bytes", ["name"]) -net_rx_gauge = Gauge("container_net_rx_bytes", "Network RX bytes", ["name"]) -net_tx_gauge = Gauge("container_net_tx_bytes", "Network TX bytes", ["name"]) +cpu_gauge = Gauge("container_cpu_percent", "CPU usage %", ["name", "container_label_coolify_projectName", "container_label_coolify_serviceName"]) +mem_gauge = Gauge("container_mem_bytes", "Memory usage bytes", ["name", "container_label_coolify_projectName", "container_label_coolify_serviceName"]) +net_rx_gauge = Gauge("container_net_rx_bytes", "Network RX bytes", ["name", "container_label_coolify_projectName", "container_label_coolify_serviceName"]) +net_tx_gauge = Gauge("container_net_tx_bytes", "Network TX bytes", ["name", "container_label_coolify_projectName", "container_label_coolify_serviceName"]) def calc_cpu(stats): cd = stats["cpu_stats"]["cpu_usage"]["total_usage"] - stats["precpu_stats"]["cpu_usage"]["total_usage"] @@ -19,15 +19,19 @@ def collect(): for c in client.containers.list(): stats = c.stats(stream=False) name = c.name - cpu_gauge.labels(name).set(calc_cpu(stats)) - mem_gauge.labels(name).set(stats["memory_stats"].get("usage", 0)) + labels = c.labels + project = labels.get("coolify.projectName", "") + service = labels.get("coolify.serviceName", "") + cpu_gauge.labels(name, project, service).set(calc_cpu(stats)) + mem_gauge.labels(name, project, service).set(stats["memory_stats"].get("usage", 0)) net = stats.get("networks", {}) rx = sum(v["rx_bytes"] for v in net.values()) tx = sum(v["tx_bytes"] for v in net.values()) - net_rx_gauge.labels(name).set(rx) - net_tx_gauge.labels(name).set(tx) + net_rx_gauge.labels(name, project, service).set(rx) + net_tx_gauge.labels(name, project, service).set(tx) start_http_server(9338) while True: collect() time.sleep(15) +