init stacks

This commit is contained in:
tan-docker
2026-03-21 14:12:55 +01:00
commit d3e8da2e25
1919 changed files with 200787 additions and 0 deletions
@@ -0,0 +1,65 @@
import os
import httpx
import requests
PROMETHEUS_URL = os.getenv("PROMETHEUS_URL")
def query_scalar(query: str) -> float | None:
try:
r = httpx.get(
f"{PROMETHEUS_URL}/api/v1/query",
params={"query": query},
timeout=5.0,
)
r.raise_for_status()
data = r.json()
if data["status"] != "success":
return None
result = data["data"]["result"]
if not result:
return None
return float(result[0]["value"][1])
except Exception:
return None
def query(promql: str):
r = requests.get(
f"{PROMETHEUS_URL}/api/v1/query",
params={"query": promql},
timeout=3,
)
r.raise_for_status()
return r.json()["data"]["result"]
def get_cpu_usage():
result = query(
'100 - (avg by(instance) (rate(node_cpu_seconds_total{mode="idle"}[1m])) * 100)'
)
return float(result[0]["value"][1]) if result else 0.0
def get_memory_usage():
result = query(
'(1 - (node_memory_MemAvailable_bytes / node_memory_MemTotal_bytes)) * 100'
)
return float(result[0]["value"][1]) if result else 0.0
def get_disk_usage():
result = query(
'(1 - (node_filesystem_avail_bytes{fstype!~"tmpfs|overlay"} / '
'node_filesystem_size_bytes{fstype!~"tmpfs|overlay"})) * 100'
)
return float(result[0]["value"][1]) if result else 0.0
def get_container_down():
result = query(
'count(container_last_seen{job="cadvisor"} < time() - 60)'
)
return int(result[0]["value"][1]) if result else 0