Context
O platformă AI privată cu 15 containere produce multă telemetrie, utilizarea abonamentului Claude Code, presiunea GPU pe containerul de inferență, adâncimea cozilor pe pipeline-urile de conținut, statusul build-urilor în proiectele interne, datele de expirare a certificatelor, accesibilitatea de rețea pe cele două noduri Proxmox. Cea mai mare parte stă în log-uri journalctl pe care nu le citește nimeni.
Dashboard-ul este ce se deschide primul lucru dimineața. Există pentru ca răspunsul la „e ceva stricat?” să fie o privire în loc de o sesiune SSH.
Brief
- O singură pagină, un singur ecran, fără scroll pe un monitor 1080p.
- Refresh de date sub 200ms, nimic async, nimic în așteptare după un API lent.
- Tracking live al utilizării Claude Code (citit din cache-ul local al CLI-ului).
- Sănătate per container (CPU, memorie, ultimul restart).
- Planuri de coadă proiect (starea actuală a pipeline-ului în FB-Media + ContentForge).
- Auth, un singur utilizator (eu), Basic Auth bcrypt era corect pentru modelul de amenințare.
- Găzduit pe platforma însăși, nu pe SaaS, dashboard-ul nu poate depinde de lucrul pe care îl monitorizează.
Arhitectură
Frontend Vite + React. Backend Fastify pe Node, SQLite pentru bucățica mică de stare (praguri de alertă, avertismente amânate). PM2 ține procesul Node în viață peste reboot-uri; rulează în CT 208 pe nodul Proxmox de tier servicii.
Cea mai inteligentă piesă este sidecar-ul Gaming PC. Datele de utilizare Claude Code CLI trăiesc pe un host Windows WSL2 pe care containerele LXC nu îl pot vedea direct. Un mic sidecar Node (claude-sidecar serviciu systemd, port 11436) pe Gaming PC citește cache-ul local al CLI-ului + servește un endpoint JSON peste LAN. Dashboard-ul îl interoghează la fiecare 5 secunde.
Un portproxy Windows face puntea între portul LAN și adresa internă WSL2, workaround-ul a luat o după-amiază să fie pus în loc, dar înseamnă că dashboard-ul vede utilizarea reală Claude în timp real, nu o presupunere bazată pe scrape de log-uri.
Rezultate
- 15 containere LXC monitorizate pe două noduri Proxmox.
- Refresh sub 200ms pentru cardurile live (utilizare Claude, GPU, adâncime coadă).
- Layout single-screen, totul vizibil la 1080p fără scroll.
- Zero downtime de la lansare, dashboard-ul a rulat prin fiecare ciclu de reboot pentru upgrade de kernel.
- Cost operator, check-in-ul de dimineață a trecut de la 5 minute de
pct list+nvidia-smi+journalctlla o privire de 10 secunde.
Capturi de ecran
[FILL: înlocuiește cu capturi ale dashboard-ului live, ecranul principal + cardul utilizare Claude + cardul presiune GPU + cardul planuri de coadă. Anonimizează orice hostname-uri de container dacă e nevoie.]
Ce urmează
Două elemente pe lista pentru iterația următoare:
- Împinge logica sidecar-ului WSL2 într-un cont de serviciu propriu pe Gaming PC în loc să-l rulez sub login-ul de developer. Lanțul SSH care acordă dashboard-ului acces de citire la cache-ul CLI este în prezent un singur punct de eșec dacă login-ul de developer expiră.
- Reguli de alertă per container, alertarea actuală este doar prag (CPU > 90%, memorie > 95%). Un mic motor de reguli (ex. Prometheus AlertManager-lite) mi-ar permite să marchez alertele zgomotoase ca amânate fără a pierde semnalul de bază.