This commit is contained in:
11
exporter.py
11
exporter.py
@@ -1,6 +1,6 @@
|
|||||||
import time
|
import time
|
||||||
import docker
|
import docker
|
||||||
from prometheus_client import start_http_server, Gauge, Counter
|
from prometheus_client import start_http_server, Gauge, Counter, Info
|
||||||
from concurrent.futures import ThreadPoolExecutor
|
from concurrent.futures import ThreadPoolExecutor
|
||||||
|
|
||||||
client = docker.from_env()
|
client = docker.from_env()
|
||||||
@@ -9,6 +9,7 @@ cpu_gauge = Gauge("container_cpu_percent", "CPU usage %", ["name", "container_la
|
|||||||
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_counter = Counter("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_counter = Counter("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"])
|
||||||
|
ports_info = Gauge("container_ports", "Container exposed ports", ["name", "container_label_coolify_projectName", "container_label_coolify_serviceName", "ports"])
|
||||||
|
|
||||||
net_rx_prev = {}
|
net_rx_prev = {}
|
||||||
net_tx_prev = {}
|
net_tx_prev = {}
|
||||||
@@ -39,6 +40,12 @@ def collect_one(c):
|
|||||||
net_tx_counter.labels(name, project, service).inc(tx_delta)
|
net_tx_counter.labels(name, project, service).inc(tx_delta)
|
||||||
net_rx_prev[key] = rx
|
net_rx_prev[key] = rx
|
||||||
net_tx_prev[key] = tx
|
net_tx_prev[key] = tx
|
||||||
|
port_bindings = c.ports
|
||||||
|
ports_str = ", ".join(
|
||||||
|
f"{v[0]['HostPort']}->{k}"
|
||||||
|
for k, v in port_bindings.items() if v
|
||||||
|
) or ""
|
||||||
|
ports_info.labels(name, project, service, ports_str).set(1)
|
||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
@@ -50,4 +57,4 @@ def collect():
|
|||||||
start_http_server(9338)
|
start_http_server(9338)
|
||||||
while True:
|
while True:
|
||||||
collect()
|
collect()
|
||||||
time.sleep(15)
|
time.sleep(15)
|
||||||
|
|||||||
Reference in New Issue
Block a user