Métriques Prometheus en Kotlin : intégration avec Micrometer et Ktor

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Métriques Prometheus en Kotlin : des bases aux solutions de production



Les applications backend modernes nécessitent une surveillance constante. Prometheus est la norme de facto pour la collecte de métriques dans le monde des microservices. Dans cet article, nous allons voir comment intégrer Prometheus dans des applications Kotlin à l'aide de la bibliothèque Micrometer et du framework Ktor. Vous apprendrez à créer des compteurs personnalisés, des histogrammes et des minuteurs, ainsi qu'à configurer un point de terminaison pour la collecte de métriques.



1. Pourquoi Micrometer ?

Micrometer est une façade de monitoring, analogue à SLF4J pour la journalisation. Il prend en charge de nombreux backends : Prometheus, Graphite, Datadog, InfluxDB et autres. En utilisant Micrometer, vous ne vous liez pas à un système de monitoring spécifique — il suffit de changer la dépendance.



Pour Prometheus, Micrometer fournit un registre spécial PrometheusMeterRegistry, qui exporte les métriques dans un format texte compréhensible par Prometheus.



2. Ajout des dépendances

Ajoutez les dépendances suivantes dans build.gradle.kts :



dependencies {    // Micrometer + Prometheus    implementation("io.micrometer:micrometer-core:1.12.5")    implementation("io.micrometer:micrometer-registry-prometheus:1.12.5")

// Pour Ktor implementation("io.ktor:ktor-server-core:2.3.9") implementation("io.ktor:ktor-server-netty:2.3.9") implementation("io.ktor:ktor-server-metrics-micrometer:2.3.9")}


Si vous utilisez Spring Boot, il suffit d'ajouter spring-boot-starter-actuator et micrometer-registry-prometheus — Spring Boot configurera automatiquement le point de terminaison /actuator/prometheus.



3. Configuration de base dans Ktor

Créons une application Ktor simple avec des métriques Prometheus. Nous aurons besoin de :

  • PrometheusMeterRegistry — le registre de métriques
  • KtorMetricsPlugin — le plugin pour la collecte automatique des métriques HTTP
  • Le point de terminaison /metrics pour la collecte des données Prometheus


import io.ktor.server.application.*import io.ktor.server.engine.*import io.ktor.server.netty.*import io.ktor.server.response.*import io.ktor.server.routing.*import io.micrometer.prometheus.PrometheusConfigimport io.micrometer.prometheus.PrometheusMeterRegistryimport io.ktor.server.plugins.metrics.micrometer.*

fun main() { val prometheusRegistry = PrometheusMeterRegistry(PrometheusConfig.DEFAULT)

embeddedServer(Netty, port = 8080) { install(MicrometerMetrics) { registry = prometheusRegistry // Activation de la collecte des métriques par défaut (JVM, processeur, mémoire) meterBinders = listOf( JvmGcMetrics(), JvmMemoryMetrics(), ProcessorMetrics() ) }

routing { // Point de terminaison pour Prometheus get("/metrics") { call.respondText( contentType = ContentType.parse("text/plain; version=0.0.4"), text = prometheusRegistry.scrape() ) }

// Exemple de point de terminaison métier get("/hello") { call.respondText("Hello, Kotlin!") } } }.start(wait = true)}


4. Métriques personnalisées

En plus des métriques automatiques, vous pouvez créer les vôtres. Examinons trois types principaux :

  • Counter — un compteur (par exemple, le nombre de requêtes)
  • Timer — le temps d'exécution d'une opération
  • Gauge — une valeur courante (par exemple, le nombre d'utilisateurs actifs)


import io.micrometer.core.instrument.Counterimport io.micrometer.core.instrument.Timerimport io.micrometer.core.instrument.Gauge

// Création des métriquesval requestCounter: Counter = Counter .builder(

Recommendations