feat: implement Swapper metrics collection and UI

This commit is contained in:
Apple
2025-11-30 15:12:49 -08:00
parent 5b5160ad8b
commit fd814b2059
11 changed files with 1224 additions and 4543 deletions

View File

@@ -181,10 +181,49 @@ class NodeGuardian:
return {"error": str(e)}
async def collect_metrics(self) -> Dict[str, Any]:
"""Зібрати метрики ноди (базова реалізація)"""
# TODO: Implement real metrics collection
# For now, return empty metrics
return {}
"""Зібрати метрики ноди та Swapper"""
metrics = {
"cpu_usage": 0.0, # TODO: Implement real metrics
"gpu_vram_used": 0,
"ram_used": 0,
"disk_used": 0,
"agent_count_router": 0,
"agent_count_system": 0,
"dagi_router_url": "http://dagi-router:9102",
# Swapper defaults
"swapper_healthy": False,
"swapper_models_loaded": 0,
"swapper_models_total": 0,
"swapper_state": {}
}
# Collect Swapper Metrics
swapper_url = os.getenv("SWAPPER_URL", "http://swapper-service:8890")
try:
# Check healthz
try:
r = await self.client.get(f"{swapper_url}/healthz", timeout=3.0)
metrics["swapper_healthy"] = (r.status_code == 200)
except Exception:
metrics["swapper_healthy"] = False
# Check models
try:
r = await self.client.get(f"{swapper_url}/v1/models", timeout=5.0)
if r.status_code == 200:
data = r.json()
models = data.get("models", [])
metrics["swapper_models_total"] = len(models)
metrics["swapper_models_loaded"] = sum(1 for m in models if m.get("loaded") is True)
metrics["swapper_state"] = data
except Exception as e:
logger.warning(f"Failed to fetch Swapper models: {e}")
pass
except Exception as e:
logger.warning(f"Swapper metrics collection failed: {e}")
return metrics
async def run_health_check(self) -> Dict[str, Any]:
"""