feat: implement Swapper metrics collection and UI
This commit is contained in:
@@ -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]:
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user