From ab576107af8c9234269e6156f8782faa1731f0a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=B6ren=20Henning?= <soeren.henning@email.uni-kiel.de> Date: Wed, 23 Feb 2022 16:02:53 +0100 Subject: [PATCH] Add Micrometer metrics --- theodolite-benchmarks/http-bridge/build.gradle | 2 ++ .../commons/httpbridge/JavalinWebServer.java | 15 ++++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/theodolite-benchmarks/http-bridge/build.gradle b/theodolite-benchmarks/http-bridge/build.gradle index 0377eefc7..6bc7c7218 100644 --- a/theodolite-benchmarks/http-bridge/build.gradle +++ b/theodolite-benchmarks/http-bridge/build.gradle @@ -24,6 +24,8 @@ dependencies { implementation project(':load-generator-commons') implementation 'io.javalin:javalin:4.3.0' + implementation 'io.micrometer:micrometer-core:1.8.3' + implementation 'io.micrometer:micrometer-registry-prometheus:1.8.3' implementation 'com.google.code.gson:gson:2.8.2' runtimeOnly 'org.slf4j:slf4j-simple:1.7.25' diff --git a/theodolite-benchmarks/http-bridge/src/main/java/theodolite/commons/httpbridge/JavalinWebServer.java b/theodolite-benchmarks/http-bridge/src/main/java/theodolite/commons/httpbridge/JavalinWebServer.java index c23a17588..e7073a421 100644 --- a/theodolite-benchmarks/http-bridge/src/main/java/theodolite/commons/httpbridge/JavalinWebServer.java +++ b/theodolite-benchmarks/http-bridge/src/main/java/theodolite/commons/httpbridge/JavalinWebServer.java @@ -1,6 +1,10 @@ package theodolite.commons.httpbridge; import io.javalin.Javalin; +import io.javalin.plugin.metrics.MicrometerPlugin; +import io.micrometer.prometheus.PrometheusConfig; +import io.micrometer.prometheus.PrometheusMeterRegistry; +import io.prometheus.client.exporter.common.TextFormat; import java.util.Collection; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -14,7 +18,9 @@ public class JavalinWebServer { private static final int HTTP_SUCCESS = 200; - private final Javalin app = Javalin.create(); + private final Javalin app; + + private final PrometheusMeterRegistry registry; private final String host; private final int port; @@ -28,6 +34,10 @@ public class JavalinWebServer { final int port) { this.host = host; this.port = port; + this.registry = new PrometheusMeterRegistry(PrometheusConfig.DEFAULT); + this.app = Javalin.create(config -> { + config.registerPlugin(new MicrometerPlugin(this.registry)); + }); this.configureRoutes(converters); } @@ -40,6 +50,9 @@ public class JavalinWebServer { ctx.status(HTTP_SUCCESS); }); } + this.app.get("/metrics", ctx -> ctx + .contentType(TextFormat.CONTENT_TYPE_004) + .result(this.registry.scrape())); } public void start() { -- GitLab