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