Spring Boot propose un point de terminaison de métriques que vous pouvez utiliser à des fins de diagnostic pour analyser les métriques recueillies par l’application.
L’ajout de la dépendance à l’intérieur de POM est la première étape
Un compteur est une interface pour rassembler un tas d’estimations (que nous appelons séparément des mesures) sur votre application. charges de mesures de ressort avec un ensemble confirmé de natifs de compteur, notamment Timer, Counter, Gauge, DistributionSummary et LongTaskTimer. Notez que divers types de compteurs entraînent un nombre alternatif de mesures. Par exemple, alors qu’il existe une métrique solitaire qui adresse une jauge, une minuterie estime à la fois le nombre d’occasions coordonnées et la saison absolue de toutes les occasions planifiées.
<dependency>
<groupId>org.springframework.metrics</groupId>
<artifactId>spring-metrics</artifactId>
<version>${metrics.version}</version>
</dependency>
Créer une configuration de registre
Une bibliothèque crée et gère l’agencement des compteurs de votre application. Les exportateurs utilisent la bibliothèque de compteurs pour mettre l’accent sur la disposition des compteurs instrumentant votre application, puis répétez les mesures de chaque compteur, ce qui entraîne pour la plupart une série de périodes dans le backend de mesures pour chaque mélange de mesures et de mesures.
Trois exécutions de bibliothèque de compteurs sont fournies en dehors du cas : SpectatorMeterRegistry, PrometheusMeterRegistry et SimpleMeterRegistry. Les bibliothèques sont pour la plupart créées de manière inattendue en choisissant un backend via @EnableAtlasMetrics, @EnablePrometheusMetrics, etc.
import org.springframework.boot.actuate.autoconfigure.metrics.MeterRegistryCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import io.micrometer.core.aop.TimedAspect;
import io.micrometer.core.instrument.MeterRegistry;
@configuration
public class RegistryConfig {
@Bean
MeterRegistryCustomizer<MeterRegistry> metricsCommonTags() {
return registry -> registry.config().commonTags("region", "someRegionName");
}
@Bean
TimedAspect timedAspect(MterRegistry registry) {
return new TimedAspect(reegistry);
}
}
Chaque fois que nous voulons vérifier les métriques d’une méthode, nous n’avons qu’à ajouter le @Timed au-dessus de la méthode et nous pouvons garder une trace de la méthode.
Ajouter @Timed à la méthode
@Timed("mockMetricsSomeData")
public String getSomeData(){
return "mockData":
}
Appeler l’URL avec des métriques
Vous obtiendrez la réponse souhaitée à partir de l’URL des métriques et nous pouvons conserver ces enregistrements et les utiliser pour créer un tableau de bord pour n’importe quelle valeur de seuil.
{
"names": [
"jvm.memory.committed",
"jvm.gc.concurrent.phase.time",
"jvm.buffer.total.capacity",
"logback.events",
"jvm.memory.max",
"jvm.buffer.memory.used",
"jvm.classes.loaded",
"tomcat.threads.config.max",
"http.server.requests",
"metrometric.interval.gc.executiontimemillis",
"jvm.memory.used",
"jvm.classes.unloaded",
"tomcat.sessions.active.current",
"tomcat.global.error",
"metrometric.interval.gc.count",
"tomcat.sessions.alive.max",
"jvm.gc.live.data.size",
"metrometric.heap.max",
"tomcat.threads.current",
"metrometric.heap.used",
"process.files.open",
"jvm.gc.pause",
"tomcat.sessions.active.max",
"metrometric.heap.committed",
"tomcat.threads.busy",
"OemCrn.getCrnPrograms",
"process.start.time",
"process.files.max",
"jvm.gc.memory.promoted",
"metrometric.total.metrics_in_memory.count",
"system.load.average.1m",
"jvm.buffer.count",
"jvm.gc.max.data.size",
"tomcat.servlet.request.max",
"process.cpu.usage"
]
}
Et si nous approfondissons le CLÉ Nous obtiendrons la réponse plus granulaire par exemple :
- /metrics/mockMetricsSomeData
{
"name": "mockMetricsSomeData",
"description": null,
"baseUnit": "milliseconds",
"measurements": [
{
"statistic": "COUNT",
"value": 0
},
{
"statistic": "TOTAL_TIME",
"value": 0
},
{
"statistic": "MAX",
"value": 0
}
],
"availableTags": [
{
"tag": "servicename",
"values": [
"mockMetrics"
]
},
{
"tag": "containerhost",
"values": [
"3c94ccb43ab6"
]
}
]
}
Nous aurons donc toutes les réponses pour les métriques et nous pourrons les utiliser à notre convenance. En cas de doute, n’hésitez pas à demander dans la section commentaire.