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

This commit is contained in:
2026-03-18 10:00:28 +03:00
parent fce7f10da1
commit 6e99ce60b2

View File

@@ -4,10 +4,10 @@ from prometheus_client import start_http_server, Gauge
client = docker.from_env() client = docker.from_env()
cpu_gauge = Gauge("container_cpu_percent", "CPU usage %", ["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"]) 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"]) 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"]) net_tx_gauge = Gauge("container_net_tx_bytes", "Network TX bytes", ["name", "container_label_coolify_projectName", "container_label_coolify_serviceName"])
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"]
@@ -19,15 +19,19 @@ def collect():
for c in client.containers.list(): for c in client.containers.list():
stats = c.stats(stream=False) stats = c.stats(stream=False)
name = c.name name = c.name
cpu_gauge.labels(name).set(calc_cpu(stats)) labels = c.labels
mem_gauge.labels(name).set(stats["memory_stats"].get("usage", 0)) 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", {}) 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).set(rx) net_rx_gauge.labels(name, project, service).set(rx)
net_tx_gauge.labels(name).set(tx) net_tx_gauge.labels(name, project, service).set(tx)
start_http_server(9338) start_http_server(9338)
while True: while True:
collect() collect()
time.sleep(15) time.sleep(15)