Dirac est l’implémentation MicroProfile Metrics 5.1.1 de l’écosystème Vidocq. Elle mesure l’état d’exécution d’une application — compteurs, jauges, histogrammes, minuteries — et l’expose en OpenMetrics / Prometheus text et JSON, sans jamais altérer l’observable par l’observation. Les annotations CDI (@Counted, @Timed, @Gauge) sont câblées via Vauban, l’endpoint optionnel GET /metrics est servi par Cassini, et la configuration mp.metrics.* est résolue via Ravel.
Origine du nom
Paul Dirac (1902-1984), physicien anglais, lauréat du prix Nobel 1933. Auteur de l’équation de Dirac (équation relativiste de l’électron, 1928), il prédit l’existence de l’antimatière par pure symétrie mathématique, et fonde avec Fermi la statistique d’occupation des fermions. Voir la fiche Wikipédia.
Dirac a posé le cadre formel qui sépare l’observable de l’instrument — son formalisme bra-ket ordonne la mesure quantique sans confondre l’état avec le geste qui le sonde. Le runtime Dirac applique la même discipline aux métriques d’application : pas de synchronized, pas de ThreadLocal, des compteurs LongAdder sans contention, et System.nanoTime() partout pour la résolution temporelle. L’instrumentation est orthogonale au code métier, jamais intrusive sur le chemin chaud.
| Paul Dirac, le physicien | Dirac, le runtime de métriques |
|---|---|
Équation de Dirac — formalisme relativiste de l’électron |
Modèle MP Metrics 5.1.1 — Counter, Gauge, Histogram, Timer |
Prédiction de l’antimatière par symétrie |
Compteurs négatifs autorisés (deltas), |
Statistique de Fermi-Dirac — occupation discrète |
Histogrammes par buckets discrets, percentiles p50–p999 |
Constante de Dirac ( |
|
Notation bra-ket — observable orthogonal à l’état |
Instrumentation orthogonale au code métier (intercepteurs) |
Mesure quantique sans perturber l’état |
Zéro |
En un coup d’œil
Spec implémentée |
|
Dépôt |
|
Java |
25 (LTS) |
Modules JPMS |
|
Packages publics |
|
Dépendances runtime |
|
Prête pour jlink |
✅ — chaque sous-module a son |
TCK MP Metrics 5.1.1 |
🚧 M8 — statut à confirmer dans |
Trois traits identitaires
-
Zéro librairie tierce — pas de Micrometer, pas de Dropwizard Metrics, pas de SmallRye Metrics. Seule
microprofile-metrics-apiest compilée dansdirac-core. Les formatters OpenMetrics et JSON sont écrits à la main avecStringBuilder. -
Zéro contention sur le chemin d’instrumentation —
LongAdderpour les compteurs,AtomicLongArraypour les histogrammes,System.nanoTime()pour les minuteries,ConcurrentHashMappour les registres. Aucunsynchronized, aucunThreadLocal, aucun verrou plateforme — virtual-thread-friendly par construction. -
JPMS strict + jlink validé (M9) — chaque artefact Dirac a son
module-info.java.dirac-mp-metrics-apiest un repackage local de la spec MP Metrics 5.1.1 avecmodule-info.classexplicite, livré pour quejlinkn’ait pas à traverser un module automatique sans nom canonique.
Positionnement dans l’écosystème
Dirac consomme l’écosystème de bas en haut : Chappe sert l’endpoint, Cassini expose la ressource JAX-RS GET /metrics, Vauban orchestre les intercepteurs et la BCE DiracExtension, Ravel résout les clés mp.metrics.*. Dirac ajoute la couche d’observation — compteurs, histogrammes, formatters — sans rien réécrire ailleurs.
Ressources rapides
-
Démarrage rapide — premier compteur, premier
/metrics. -
Cas d’usage —
@Counted,@Timed,@Gauge, tags, format, configuration. -
Concepts — types de métriques, scopes, tags, formats, registres.
-
Fonctionnement interne — registre lock-free, BCE Vauban, formatters.
-
TCK — exécution, statut, runner hors reactor.
-
Référence — artefacts, annotations, clés
mp.metrics.*. -
Migration — depuis SmallRye, Micrometer ou Dropwizard.
Suivant : Démarrage rapide.