Mesures, caps et positions
Trois types de relevés, séparés à dessein. Un cap se moyenne autour du cercle et non à travers la couture 0°/360°, où la moyenne naïve de 350° et 10° donnerait plein sud.
Données en direct
Les mesures arrivent par ce que vous exploitez déjà, sont vérifiées avant d’être conservées, et apparaissent dans chaque module qui les vise. Les deux modules Moniteur existent pour que vous n’ayez jamais à le croire sur parole.
Depuis vos brokers de messages, un simple appel HTTP, ou l’exporteur de journaux que vous utilisez déjà.
En mesure, cap ou position — et une valeur visant le mauvais type de capteur est refusée plutôt que stockée pour ce qu’elle n’est pas.
Les horodatages sont tenus dans une fenêtre que vous configurez : un émetteur à l’horloge déréglée ne peut pas écrire dans l’année prochaine.
Une mesure livrée deux fois est reconnue comme la même mesure, au lieu de dévier discrètement une moyenne de sa course.
Sur un graphique, une tuile, un marqueur de carte ou un plan d’étage — partout où vous avez pointé quelque chose vers elle.
Trois types de relevés, séparés à dessein. Un cap se moyenne autour du cercle et non à travers la couture 0°/360°, où la moyenne naïve de 350° et 10° donnerait plein sud.
Chaque graphique et chaque tuile choisit sa synthèse par intervalle : moyenne, minimum, maximum, somme, nombre, médiane et percentiles, enveloppes de pointes, écart type, deltas de compteurs ou couverture des données — les percentiles sont précalculés lors du compactage de chaque jour et de chaque mois, si bien qu’un P95 coûte ce que coûte une moyenne. Les directions ont droit à de vraies statistiques circulaires — un cap de boussole, la distribution par secteurs d’une rose des vents — et les positions se tracent en trajectoires dans le temps plutôt que d’être moyennées en un point jamais visité.
Les journaux applicatifs et les charges de texte personnalisées arrivent par le même chemin et atterrissent dans l’Explorateur de logs — interrogeables par identifiant, source et temps, et marqués par vos groupes de surlignage.
Ce qui se perd malgré tout est signalé comme tel plutôt qu’oublié en silence. C’est le chiffre qui mérite une alerte, et il figure sur les pages Moniteur au lieu d’être enfoui.
Chaque transport accepte un lot de mesures par message — une passerelle qui vide d’un coup une seconde d’échantillons de ses capteurs — aussi bien qu’une mesure à la fois. C’est la forme en lots qui permet à une seule instance d’ingestion d’absorber des centaines de milliers de mesures par seconde.
Un consommateur de broker bloqué sur une connexion morte est repéré, signalé sur le point de santé et redémarré — sur chaque transport, de la même façon — au lieu de rester silencieux pendant que les mesures s’accumulent sans être vues.
Pour les ingénieurs
Si votre équipe pense en termes d’ingénierie des données, le chemin d’ingestion est un ETL — extraction, transformation, chargement — qui tourne en continu plutôt que sur un planning nocturne. La transformation est terminée avant que quoi que ce soit n’atteigne le stockage de long terme : ce qui est stocké est déjà la forme canonique et propre que lit chaque module.
Les mesures arrivent des brokers de messages que vous exploitez déjà, ou en HTTP simple. Les noms de champs du producteur sont projetés sur une forme canonique unique dès l’entrée — rien en aval ne voit jamais un format propre à une source, et ajouter une source ne change jamais ce qui est stocké.
Avant le stockage, chaque mesure est validée, son horodatage normalisé et tenu dans la fenêtre acceptée, une relivraison reconnue comme la même mesure, et son type — mesure, cap ou position — décidé. Les mesures sont ensuite réduites en synthèses à la minute, calculées correctement à travers toutes les instances de réception, pas machine par machine.
Un balayage distinct écrit les minutes achevées dans la base de données, découplé de l’arrivée — un stockage lent retarde le stockage, jamais l’ingestion, et les pages Moniteur montrent exactement le retard de l’étape de chargement. À la clôture du mois, les mois scellés sont repliés en forme compacte de requête, dans la base elle-même.
Les trois mêmes étapes portent les textes et les journaux — extraits des mêmes brokers, du protocole de télémétrie standard pour les journaux et de HTTP simple, et chargés en fichiers compressés plutôt qu’en lignes de base de données : le volume de journaux ne pèse jamais sur la base.