Contexte
Veona est une plateforme de supervision système conçue et implémentée de l’agent de collecte jusqu’à la couche de visualisation. L’objectif : une stack légère et reproductible pour la collecte de métriques système, leur stockage time-series et la détection d’anomalies — sans dépendance à un service cloud tiers.
Architecture
La plateforme s’organise en trois plans séparés :
- Plan de données (Agent Go) : un binaire unique collecte les métriques système (CPU, mémoire, disque, réseau, GPU, températures, batterie, entropie, NTP) via
gopsutil. Les collecteurs tournent en goroutines indépendantes, chacune avec son propre intervalle configurable en YAML. Un ring buffer en mémoire absorbe les coupures réseau transitoires, et un dispatcher HTTP pousse les métriques compressées en GZIP vers le serveur. - Plan de contrôle (Serveur Hono / TypeScript) : validation des tokens Bearer, transformation JSON vers le format Prometheus, persistance des tokens et anomalies dans SQLite via Drizzle, cache LRU en mémoire pour lisser les pics d’ingestion. Un scheduler
node-cronpilote les tâches ML périodiques. - Plan d’analyse (Moteur ML) : six modules — détection d’anomalies par Z-score sur fenêtre glissante, prévisions de saturation disque/mémoire/swap par régression linéaire, score de santé composite 0–100, seed automatique de données synthétiques, scheduler et client PromQL.
Composants clés
- Agent Go : architecture en plugins, découverte automatique des disques avec politique d’exclusion par type de filesystem, build cross-platform (Linux/Windows), configuration YAML centralisée
- Serveur Hono : middlewares
rateLimiteretvalidateTokentypés via le contexte Hono, validation Zod des payloads, logger JSON structuré - Stockage time-series : VictoriaMetrics avec conversion JSON→Prometheus à la volée
- Moteur ML : Z-score (N=60, seuil 3,0) en temps réel à l’ingestion + batch toutes les 30 s, régression linéaire sur fenêtre 24 h, score de santé pondéré (anomalies × prévisions × zombies × dérive NTP)
- Déploiement : stack Docker Compose complète avec reverse-proxy Nginx, dashboards Grafana pré-configurés, healthcheck
GET /health
Caractéristiques
- Open source sous licence MIT, Go 1.22+ et Node.js 20+
- Reproductible :
docker-compose upsuffit à démarrer l’ensemble de la stack - Extensible : ajout d’un nouveau collecteur ou d’un nouveau module ML sans modifier le code existant
- Observabilité native : les sorties du moteur ML sont poussées comme métriques (
veona_ml_*), interrogeables directement dans Grafana
Choix techniques
Le projet applique des algorithmes statistiques classiques (Z-score, régression linéaire) là où des modèles plus lourds seraient disproportionnés : la latence d’inférence reste en dessous de la milliseconde, sans dépendance à un runtime ML externe.