|
Dirac est en |
Côté code applicatif, la migration vers Dirac est triviale : Dirac consomme strictement les annotations standard org.eclipse.microprofile.metrics.annotation.*. Aucun import propriétaire à remplacer. Les écarts portent sur la configuration, le packaging et le format d’exposition par défaut.
Depuis SmallRye Metrics
SmallRye Metrics est l’implémentation de référence chez Quarkus et certains serveurs Jakarta EE. Migration directe — Dirac vise la stricte conformance à la même spec.
| SmallRye Metrics | Dirac | Note |
|---|---|---|
Annotations |
Mêmes annotations |
Aucun changement de code applicatif. |
Endpoint |
Endpoint |
Identique. Négociation de contenu OpenMetrics/JSON identique. |
|
|
Tags globaux, percentiles, buckets : identiques. |
Dépendances : Micrometer, HdrHistogram, Jackson… |
Aucune (formatters maison) |
Empreinte classpath réduite. Compatibilité jlink immédiate (M9). |
Format JSON via Jackson |
Format JSON via |
Pas de moteur JSON externe — vérifier les clients très permissifs sur l’ordre des clés. |
Depuis Micrometer
Micrometer est l’API d’instrumentation par défaut de Spring Boot. La migration vers MP Metrics suppose un remplacement d’API côté application.
| Micrometer | Dirac (MP Metrics) | Note |
|---|---|---|
|
|
Changement d’import. Sémantique identique. |
|
|
API programmatique différente, comportement équivalent. |
|
|
Injection par |
Exporters par backend (Prometheus, Datadog, StatsD…) |
OpenMetrics text + JSON natifs |
Pour d’autres backends, brancher un scraper Prometheus → exporter de destination. |
Depuis Dropwizard Metrics
Dropwizard est l’ancêtre d’une grande partie de la spec MP Metrics. Migration en deux temps : changer l’API, puis exposer.
| Dropwizard | Dirac (MP Metrics) | Note |
|---|---|---|
|
|
Notion de tags absente en Dropwizard — basculer vers les tags MP. |
|
|
API runtime équivalente ; préférer l’annotation pour le code intercepté CDI. |
|
|
Identique. Percentiles configurés via |
Exposition via |
Exposition native OpenMetrics + JSON sur |
Suppression de l’adapter et du servlet — l’endpoint MP Metrics suffit. |
Points d’attention
-
Pas de
Meter, pas deConcurrentGauge, pas deSimpleTimer— retirés de la spec MP Metrics 5.0. Remplacer parCounter+Timerselon le cas. -
@Histogram(annotation) — absente du JARmicroprofile-metrics-api:5.1.1utilisé par Dirac. Déclarer les histogrammes programmatiquement viaMetricRegistry.histogram(…). -
Pas de
setAccessible(true)— si du code applicatif utilisait des classes non-publiques avec un ancien scanner permissif, Dirac n’y accédera pas. Rendre les typespublicou ajouteropensdans lemodule-infoapplicatif. -
Endpoint fixé —
/metricsest imposé par la spec. Pour publier sur un autre chemin, ajouter un alias JAX-RS côté application. -
Tags globaux —
mp.metrics.tags=app=orders,env=prodest appliqué à l’union des trois scopes ; pas besoin de patcher chaque appel d’enregistrement.
Checklist de portage
-
Déclarer
dirac-core+dirac-cdi-vauban+dirac-restau lieu de SmallRye / Micrometer / Dropwizard. -
Remplacer les imports propriétaires (
io.micrometer.,com.codahale.,io.smallrye.metrics.) parorg.eclipse.microprofile.metrics.. -
Migrer les propriétés propres vers les clés
mp.metrics.*(Référence). -
Lancer
./mvnw testpuis./run-official-tck-mp-metrics-5.1.sh all. -
Comparer la sortie OpenMetrics avant/après — vérifier les noms canoniques, les tags globaux, les unités.