Update exporter.py
All checks were successful
Build / build (push) Successful in 49s

This commit is contained in:
2026-03-18 10:55:13 +03:00
parent 7892c72279
commit 2fb9107803

View File

@@ -1,14 +1,17 @@
import time import time
import docker import docker
from prometheus_client import start_http_server, Gauge from prometheus_client import start_http_server, Gauge, Counter
from concurrent.futures import ThreadPoolExecutor from concurrent.futures import ThreadPoolExecutor
client = docker.from_env() client = docker.from_env()
cpu_gauge = Gauge("container_cpu_percent", "CPU usage %", ["name", "container_label_coolify_projectName", "container_label_coolify_serviceName"]) 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"]) 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_rx_counter = Counter("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_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): def calc_cpu(stats):
cd = stats["cpu_stats"]["cpu_usage"]["total_usage"] - stats["precpu_stats"]["cpu_usage"]["total_usage"] 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", {}) net = stats.get("networks", {})
rx = sum(v["rx_bytes"] for v in net.values()) rx = sum(v["rx_bytes"] for v in net.values())
tx = sum(v["tx_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) key = name
net_tx_gauge.labels(name, project, service).set(tx) 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: except Exception:
pass pass
@@ -42,4 +51,3 @@ start_http_server(9338)
while True: while True:
collect() collect()
time.sleep(15) time.sleep(15)