From 2fb91078032fd67f3b17b23a19498a0b596f6a92 Mon Sep 17 00:00:00 2001 From: Arrelin Date: Wed, 18 Mar 2026 10:55:13 +0300 Subject: [PATCH] Update exporter.py --- exporter.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/exporter.py b/exporter.py index 0774ae8..334b413 100644 --- a/exporter.py +++ b/exporter.py @@ -1,14 +1,17 @@ import time import docker -from prometheus_client import start_http_server, Gauge +from prometheus_client import start_http_server, Gauge, Counter from concurrent.futures import ThreadPoolExecutor client = docker.from_env() 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"]) +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"]) + +net_rx_prev = {} +net_tx_prev = {} def calc_cpu(stats): cd = stats["cpu_stats"]["cpu_usage"]["total_usage"] - stats["precpu_stats"]["cpu_usage"]["total_usage"] @@ -28,8 +31,14 @@ def collect_one(c): 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, project, service).set(rx) - net_tx_gauge.labels(name, project, service).set(tx) + key = name + if key in net_rx_prev: + rx_delta = max(0, rx - net_rx_prev[key]) + tx_delta = max(0, tx - net_tx_prev[key]) + net_rx_counter.labels(name, project, service).inc(rx_delta) + net_tx_counter.labels(name, project, service).inc(tx_delta) + net_rx_prev[key] = rx + net_tx_prev[key] = tx except Exception: pass @@ -41,5 +50,4 @@ def collect(): start_http_server(9338) while True: collect() - time.sleep(15) - + time.sleep(15) \ No newline at end of file