diff --git a/theodolite-benchmarks/http-bridge/build.gradle b/theodolite-benchmarks/http-bridge/build.gradle index 0377eefc76b456d8e0f94087b06d0c2689f977cf..6bc7c721894e36799015a0f2fb155c9b838238b8 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 c23a17588d661fc5d1c6e9eb294d2d29fc165675..e7073a421582d74009f4a89acfcfb816a689acf3 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() {