J'ai une application Java qui doit collecter et rapporter un grand nombre de métriques/mesures opérationnelles/statistiques (différents mots pour différentes personnes - j'utiliserai simplement métriques) sur diverses entités. Les métriques peuvent être :
- Une valeur numérique mesurée à un moment donné (nombre d'utilisateurs actuellement connectés au système, pourcentage d'utilisation d'une ressource).
- Une valeur numérique mesurée sur un intervalle de temps donné (nombre de messages transmis dans les 5 dernières minutes).
- Une valeur d'énumération à un moment donné (l'état de santé d'une entité est ONLINE/WARNING/FAILED/OFFLINE).
Les "entités" peuvent être des dispositifs physiques (un ordinateur, un commutateur, un modem) mais sont le plus souvent des entités logiques (canal de communication 4567, utilisateur 123456, interface avec le service A). En outre, certaines de ces entités logiques sont statiques, c'est-à-dire qu'elles sont connues à l'avance et ne changent pas pendant la durée de vie de l'application, tandis que d'autres peuvent être transitoires (le canal de communication 4567 peut n'exister que pendant un certain temps, puis être supprimé).
Je cherche des bibliothèques pour m'aider à résoudre deux problèmes :
- Facilitez la collecte et le stockage de ces éléments d'information sur le serveur.
- Présenter les données à un utilisateur de manière utile.
Note/exigences :
- L'application serveur produisant les données est essentiellement un processus Java fonctionnant comme un démon (c'est-à-dire pas une application web).
- Il y aura 2 types de clients différents.
- L'un d'entre eux est une application de bureau Java Swing, qui sera le plus utilisé. Il est important de disposer de graphiques en temps réel et de capacités d'interrogation historique.
- L'autre est une interface utilisateur Web. Mes exigences ne sont pas encore très claires, mais les besoins de ce client seront considérablement plus légers que ceux du client swing. Des normes ouvertes sont nécessaires ici (AJAX/HTML, pas Flash).
- Peut être déployé intégré dans un logiciel propriétaire (c'est-à-dire sans licence GPL). Commercial ou gratuit.
Dans le passé, mon entreprise a tenté de mettre en place quelques solutions "maison" pour répondre à ce besoin. En gros, les données sont introduites dans une base de données d'une manière incohérente, et le client extrait les données et est en mesure d'établir un graphique d'une seule valeur sur une période de temps fixe en utilisant des progiciels de graphiques maison ou tiers. Franchement, toutes nos solutions ont été nulles. Voici quelques-uns des problèmes que j'espère qu'une solution tierce partie pourra résoudre :
- Encapsulez le code utilisé pour mettre à jour/enregistrer la métrique afin qu'il ne pollue pas la classe qui mesure réellement la valeur.
- Contribuer à la gestion de la dénomination/identification des mesures. Il peut facilement y en avoir des milliers. Trouver moi-même un système de dénomination pour garantir l'unicité est un véritable casse-tête.
- Traiter les données historiques de façon agréable. Il est possible de configurer la durée de conservation des données et d'archiver ou de purger les anciens enregistrements.
- Côté client, des capacités intégrées de création de graphiques et d'interrogation, avec la possibilité de transformer certaines des données brutes de la base de données avant de les présenter à l'utilisateur.
Désolé pour la longue description. Merci pour votre aide.