feat(dashboard): live GPU health scoring + real KPIs

- Added /metrics/gpu-health endpoint with live health scores (VRAM 40%, temp 30%, load 30%)
- Added /metrics/latency endpoint for dashboard KPIs
- Added GPU_LABELS for human-readable model names
- Dashboard v2: rewired to real data endpoints
  - KPI cards: GPUs online, circuit trips, avg latency, req/min, active requests
  - Health scores from actual gpu_health_score() function
  - Rolling 60-sample history chart (real data, no simulation)
  - Status: green/yellow/red based on tripped circuits
  - No CDN dependency (pure CSS)
  - Auto-refresh every 15s
- nginx: /dashboard/ serves static files with cache headers
- docker-compose: dashboard volume mount

Co-authored-by: Abiba <abiba@sysloggh.com>
This commit is contained in:
Abiba
2026-06-12 17:57:46 +00:00
parent a860a8fd0f
commit ad9881f141
4 changed files with 220 additions and 3 deletions
+18 -3
View File
@@ -31,7 +31,7 @@ http {
# Disable buffering for SSE streams
proxy_buffering off;
# API through router
# API through router
location /v1/ {
proxy_pass http://router_api;
proxy_http_version 1.1;
@@ -42,7 +42,14 @@ http {
proxy_read_timeout 600s;
proxy_buffering off;
}
location /admin/ { proxy_pass http://router_api; proxy_http_version 1.1; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Authorization $http_authorization; }
location /admin/ {
proxy_pass http://router_api;
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Authorization $http_authorization;
}
# SSE streaming endpoint
location /stream {
@@ -71,7 +78,15 @@ location /admin/ { proxy_pass http://router_api; proxy_htt
proxy_set_header Authorization $http_authorization;
}
# Dashboard
# Professional Dashboard (Phase 1-3) - Static HTML served via Nginx
location /dashboard/ {
alias /opt/inference-harness/dashboard/;
index dashboard.html;
add_header Cache-Control "public, max-age=3600";
add_header X-Content-Type-Options nosniff;
}
# Legacy Dashboard (root) - Proxy to Flask app
location / {
proxy_pass http://dashboard_ui;
proxy_http_version 1.1;