Vue d’ensemble — ce que fait cet écran
Vue d’ensemble est le premier écran après la connexion (/). Elle traverse la disponibilité et la sécurité dans un volet unique : la bande supérieure affiche les jauges de santé composites, les cartes KPI et l’anneau des détections ; la bande inférieure affiche les séries temporelles charge / mémoire / réseau / stockage du parc de serveurs.
Caractéristiques principales :
- Deux scores composites convergents — une jauge de disponibilité (composition pondérée de toute la télémétrie non liée à la sécurité) à côté d’une jauge de sécurité (composition pondérée des preuves de détection sur 24 h).
- 8 cartes KPI — serveurs, pic de charge, pic de mémoire, pic réseau, menaces, sauvegarde et (lorsque les données existent) service web et base de données.
- Anneau des détections (24 h) — alertes IDS / anomalies IA / attaques web / balayage et blocage, quatre catégories.
- Panneau de performance des services — choisissez un service web et un service de base de données « individuels » affichés sous forme de jauge compacte (jamais additionnés).
- Bandes de serveurs sur toute la largeur — charge / mémoire / réseau / stockage, un sélecteur de plage 6h · 24h · 3d, le partage d’écran (1 · 2 · 3), un curseur de hauteur et une échelle linéaire/logarithmique.
- Interrogation en direct — une vérification peu coûteuse de
rev(le dernier seq) ne télécharge la charge utile lourde que lorsqu’elle change, puis remplace les données sur place.
Tous les chiffres sont des données réelles chargées dans la base par des collecteurs qui s’exécutent en dehors de Laravel. Si la base héritée est injoignable ou vide, le contrôleur bascule proprement vers une maquette (démo) structurellement identique ; dans ce cas
sourcevautmockupetrevvaut0, si bien que le frontend n’effectue pas de nouveau rendu.
Quand l’utiliser
- En début de journée, lorsqu’il faut savoir en 30 secondes « ce qui fait mal en ce moment » — la couleur de la jauge et les symboles de preuve montrent immédiatement quel axe (disponibilité · charge · mémoire · disque · RAID · sauvegarde / IDS · IA · web · pare-feu · réputation · TLS) est pénalisé.
- Pour construire un mur de supervision — répartir l’affichage sur plusieurs moniteurs par partage d’écran et pagination (mode plein écran).
- Pour retrouver quand le pic de charge ou de disque d’un serveur s’est produit (« il y a N minutes »).
- Comme point de départ avant de descendre dans des écrans de détail tels que Infrastructure ▸ Serveurs ou Sécurité ▸ Vue d’ensemble.
Disposition
Bandeau supérieur
Le titre et la signature (« Réaction immédiate · Prêt d’avance · Toujours restaurable ») puis, à droite, l’horodatage de la collecte (stamp) et le nombre d’hôtes, un commutateur LIVE/PAUSED et un bouton plein écran.
Score de santé (à gauche)
Deux jauges en anneau (disponibilité, sécurité) avec, en dessous, un panneau de preuves à deux colonnes :
| Colonne | 6 symboles (info-bulle au survol) | Origine du score |
|---|---|---|
| Base de la disponibilité | disponibilité · charge · mémoire · disque · RAID · sauvegarde | avail_parts issu de aggregate() (composition tenant compte de la durée, 0–100) |
| Base de la sécurité | IDS · IA · web · pare-feu · réputation · TLS | PostureService (parts de résidu non traité sur 24 h normalisées en scores de santé) |
Chaque symbole est coloré selon metric_cls : ≥90 good · ≥70 warn · en dessous crit · sans données, affichage de — (na).
Cartes KPI (centre 3×2 + 2 conditionnelles)
| Carte | Valeur | Sous-ligne |
|---|---|---|
| Serveurs | en ligne/total | nombre de hors ligne ou « tous en ligne » |
| Pic de charge | charge maximale de l’ensemble visible | hôte · « il y a N min » |
| Pic de mémoire | % de mémoire maximal de l’ensemble visible | hôte · « il y a N min » |
| Pic réseau | maximum de paquets (le plus élevé entre entrée et sortie) | hôte · « il y a N min » |
| Menaces | ouvertes (= blocages Kitsune) | bloquées aujourd’hui |
| Sauvegarde | % de réussite sur 14 jours | nombre d’exécutions sur 24 h · dernière durée · type dominant |
| Service web (conditionnelle) | up/total | hôte le plus lent · ms |
| Base de données (conditionnelle) | up/total | base la plus sollicitée · lentes sur 24 h · en file |
Les pics de charge/mémoire/réseau sont calculés côté frontend comme « le maximum de la série sur les serveurs actuellement visibles (current_servers) ». Autrement dit, changer le partage d’écran ou la page change les serveurs pris en compte par les cartes de pic. L’étiquette « il y a N min » est déduite de la position de seq (
times[idx]) où ce pic a été observé pour la première fois.
Panneau de performance des services (à droite)
Affiche un service web et un service de base de données sous forme de jauges compactes — individuels et non additionnés, afin qu’un service emballé ne soit pas noyé dans une moyenne. Utilisez la liste déroulante (« Choisir un autre service ») pour changer de cible :
- Web — un anneau de codes de réponse à quatre bandes (2xx good · 3xx info · 4xx warn · 5xx crit) avec les requêtes par seconde au centre, plus le taux d’erreur et la latence. Sélection par défaut : le plus élevé en RPS.
- BD — un arc de saturation des connexions (places) avec les QPS au centre, plus en cours/en file. Sélection par défaut : la plus saturée. Seuils de teinte 70/90 % (la convention de Service ▸ Base de données).
Anneau des détections (à droite)
Les détections sur 24 heures en quatre catégories (IDS/IA/web/balayage). Anneau ECharts + une légende HTML (nom · compteur abrégé · barre de proportion).
En bas — bandes de serveurs sur toute la largeur
Sous la barre d’outils Server stats (puce RAID · puce « <1G libre » · curseur de hauteur · libellé de plage · sélecteur de plage temporelle · boutons de partage) se trouvent quatre bandes :
- Charge moyenne — les 3 serveurs aux valeurs les plus récentes les plus élevées, épinglés avec alias·valeur, linéaire/logarithmique.
- Mémoire — % d’utilisation, linéaire/logarithmique.
- Trafic réseau — aire empilée entrée (en bas) + sortie (en haut).
- Stockage — jauge non linéaire de la racine (/) + utilisation de la partition
/data.
Comment l’utiliser
- Les jauges d’abord — lisez la couleur des deux scores. Si elle est basse, survolez les cellules rouges (crit) ou ambre (warn) parmi les 6 symboles de preuve en dessous pour voir quel axe est pénalisé.
- Cartes KPI — repérez les valeurs aberrantes (serveurs hors ligne, menaces, taux de réussite des sauvegardes). Utilisez le « il y a N min » des cartes de pic pour dater l’événement.
- Changer la fenêtre temporelle — les boutons
6h · 24h · 3den bas à droite modifient la fenêtre des bandes. Le choix est conservé danslocalStorage(infr:range:overview) et redemandé au serveur via le paramètrerange. Les cartes KPI et les jauges de santé restent figées sur une notion de 24 h (seules les bandes changent de fenêtre). - Partage d’écran — les boutons
All · 2 · 3répartissent le parc en pages (◀▶). Pratique pour l’étaler sur plusieurs moniteurs. - Hauteur et échelle — le curseur règle la hauteur des bandes (80–360px) ; le
Lin/Logde chaque bande règle l’échelle de l’axe y (utile face aux hôtes très irréguliers). - Direct / plein écran — le commutateur
LIVEdu bandeau active ou désactive l’interrogation ;full screenmasque la barre de navigation supérieure pour un mode mur de supervision.
Plage → nombre de points
La fenêtre des bandes du bas est convertie en un nombre de points de seq d’après la cadence de collecte de server_status (environ 5 min).
| range | points de seq |
|---|---|
6h |
72 |
24h |
288 (par défaut) |
3d |
864 |
Comportement de la mise à jour en direct (interrogation)
every 30s ──▶ GET /overview/rev (cheap latest seq)
│ rev changed?
├─ no → skip (0 bandwidth)
└─ yes → GET /overview/live?range=<window> → swap data + re-render charts
- Lorsque l’onglet est masqué (
document.hidden), l’interrogation se met en pause et reprend avec une vérification immédiate. - Un tic
clockde 30 secondes recalcule les étiquettes « il y a N min » même lorsque les données n’ont pas changé. - Si Reverb est raccordé (
window.Echo), un événement.ticksur le canalinfr.overviewpeut faire passer ce même rafraîchissement en mode push (sans effet pour l’instant — voir Temps réel (Reverb)).
Sources de données
Toutes en lecture seule. L’application lit telles quelles les tables de ressources héritées.
| Axe | Table / service | Connexion | Usage |
|---|---|---|---|
| Parc de serveurs / séries | server_status (loadavg·free·df-*·traffic-out) |
legacy (MAIN) |
bandes charge/mémoire/disque/réseau, disponibilité |
| RAID | storage_status (status_summary) |
legacy |
preuve Optimal/Degraded/Failed |
| Sauvegarde | backup_history |
legacy |
taux de réussite sur 14 jours · dernière · type |
| IDS | suricata_alert_ct |
legacy_glory |
anneau des détections · base de la sécurité (sev 1·2) |
| Anomalie IA | kitsune_detail_log (is_blocked) |
legacy_glory |
détections · menaces · base de la sécurité |
| Attaque web | nginx_meta_ct (is_suspicious) |
legacy_glory |
détections · taux de requêtes suspectes |
| Réputation / blocage | blacklist_info |
legacy_glory |
bloquées aujourd’hui · pression des nouveaux blocages |
| Hygiène TLS | suricata_tls_ct (version) |
legacy_glory |
taux de TLS faible (<1.2) |
| Performance du service web | WebMetricService::dashboard() (infr_web_metric) |
central | KPI web · panneau de performance |
| Performance BD | DbCollectorService::latest() · infr_db_metric · infr_collector (access=database) |
central | KPI BD · panneau de performance |
| Exposition du pare-feu | FirewallService::dashboard() (infr_instance_firewall) |
central | base de la sécurité fw |
Formules des scores composites
Disponibilité = moyenne pondérée des axes qui possèdent des données (les poids sont renormalisés). Chaque axe examine toute la fenêtre affichée et pénalise selon « combien de temps (durée) et avec quelle gravité (pic) » le seuil a été franchi.
| Axe | Poids | Base de la pénalité |
|---|---|---|
| disponibilité | 0.30 | proportion de cycles sans réponse après le premier rapport |
| charge | 0.15 | dépassement de la charge moyenne ≥ 8 (≥16 = totalement surchargé) |
| mémoire | 0.15 | utilisation > 99% (100% = pression totale) |
| disque | 0.15 | espace libre sur la racine < 1G (partitions mesurées uniquement, 0G = risque total) |
| RAID | 0.15 | un nœud Degraded/Failed obtient 0 |
| sauvegarde | 0.10 | taux de réussite sur 14 jours |
Sécurité = moyenne pondérée des 6 métriques de preuve (uniquement celles qui sont présentes). Chacune normalise une mesure de 24 h de glory en un score de santé (0–100) — plus le volume ou le taux est élevé, plus la pénalité est forte (pénalité maximale 45 → plancher 55). Ce n’est que lorsque toutes les métriques sont indisponibles que l’on retombe sur le scalaire heuristique de detections().
| Métrique | Poids | Source (24 h) | Pénalité maximale à |
|---|---|---|---|
| ids | 0.22 | nombre d’alertes IDS de gravité élevée (sev 1·2) | 200 |
| ai | 0.22 | nombre de blocages Kitsune | 500 |
| web | 0.20 | taux % de requêtes suspectes nginx | 8% |
| rep | 0.14 | nombre de nouvelles IP bloquées aujourd’hui | 400 |
| tls | 0.12 | taux % de TLS faible (<1.2) | 5% |
| fw | 0.10 | ports critiques sur IP publique ×2 + critiques + exposition non gérée | 200 |
TTL du cache
| Cible | TTL | Clé |
|---|---|---|
| Données réelles de la vue d’ensemble (build) | 30s | infr:overview:data:v1:{points} |
| Panneau de performance des services (web/db) | 15s | infr:ov:perf |
| Base de la sécurité (PostureService) | 300s | infr:sec:posture:v1:<range> |
Accès
- Écran en lecture seule. La page d’accueil (
/) n’applique que le middlewareinfr.auth— tout niveau authentifié (demo=1 et au-delà) peut la consulter. Il n’y a aucune action d’écriture, donc aucune barrière de niveau. - Les preuves de sécurité et les chiffres de détection sont visibles ici même pour demo (1), mais l’espace de rôle Sécurité dédié (
/security/*) est protégé séparément parinfr.level:2. - Pour l’ensemble du schéma de niveaux, voir Niveaux RBAC.
Dépannage et FAQ
Q. Les jauges et les cartes affichent des valeurs qui ressemblent à une démonstration.
Il s’agit du repli sur la maquette, déclenché lorsque la connexion à la base héritée (legacy/legacy_glory) échoue ou ne contient aucune donnée. Si le source de la charge utile vaut mockup et rev vaut 0, la vraie base est indisponible. Vérifiez la connectivité de la base et l’ingestion des collecteurs (Administration ▸ Collecteurs).
Q. Un symbole de preuve affiche —.
Cet axe n’a pas de données (il est exclu de la pondération). Par exemple, si la CMDB de pare-feu (infr_instance_firewall) est vide, fw affiche — — il faut des actifs de pare-feu, pas l’ancienne table firewall_status. RAID est exclu lorsqu’aucun storage_status.host correspondant n’existe.
Q. Les données ne se mettent pas à jour.
Vérifiez (1) si le commutateur du bandeau indique PAUSED et (2) si l’onglet est en arrière-plan (l’interrogation se met en pause tant qu’il est masqué). Les collecteurs ingèrent selon une cadence d’environ 5 minutes en dehors de Laravel : même avec une interrogation de 30 s, la valeur réelle peut donc accuser plusieurs minutes de retard. Si rev n’a pas changé, la charge utile lourde n’est pas téléchargée.
Q. Le serveur du pic de charge diffère selon la vue.
Le pic est calculé sur l’ensemble de serveurs de la vue courante (partage/page). Pour raisonner sur tous les serveurs, réglez le partage sur All.
Q. L’entrée réseau est toujours à 0.
server_status ne dispose d’aucune source entrante par alias : net_in est donc rempli avec 0 et seul traffic-out (paquets) est mesuré. Pour la bande passante détaillée, voir Trafic (E/S réseau).
Q. Changer la plage ne fait pas bouger les KPI ni les jauges.
C’est normal. La range (6h/24h/3d) s’applique uniquement aux bandes du bas ; les cartes KPI et les jauges de santé relèvent d’une notion fixe de 24 h.
Voir aussi
- Infrastructure ▸ Serveurs — les séries temporelles charge/mémoire par serveur en détail
- Infrastructure ▸ Santé — sondes en direct des cartes de nœud
- Sécurité ▸ Vue d’ensemble — l’entonnoir de défense menace→détection→réponse
- Service ▸ Web · Service ▸ Base de données — les écrans sources du panneau de performance
- Infrastructure ▸ Alertes — les politiques d’alerte en cas de dépassement de seuil
- Temps réel (Reverb) — le contexte du passage de l’interrogation au push
