This commit is contained in:
22
exporter.py
22
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)
|
||||
Reference in New Issue
Block a user