From acc650c08ce16eebdbdeff606b2be26c25112e2a Mon Sep 17 00:00:00 2001 From: Moritz Halbritter Date: Wed, 10 Aug 2022 15:39:46 +0200 Subject: [PATCH] Add prometheus to actuator-webmvc sample Closes gh-86 --- actuator-webmvc/build.gradle | 3 ++- .../ActuatorWebMvcApplicationAotTests.java | 9 ++++--- .../actuator/webmvc/RegisterCustomTimer.java | 24 +++++++++++++++++++ 3 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 actuator-webmvc/src/main/java/com/example/actuator/webmvc/RegisterCustomTimer.java diff --git a/actuator-webmvc/build.gradle b/actuator-webmvc/build.gradle index 271e4dd6..8fa50ddf 100644 --- a/actuator-webmvc/build.gradle +++ b/actuator-webmvc/build.gradle @@ -9,7 +9,8 @@ dependencies { implementation(platform(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES)) implementation("org.springframework.boot:spring-boot-starter-actuator") implementation("org.springframework.boot:spring-boot-starter-web") - implementation("io.micrometer:micrometer-registry-prometheus") + + runtimeOnly("io.micrometer:micrometer-registry-prometheus") testImplementation("org.springframework.boot:spring-boot-starter-test") diff --git a/actuator-webmvc/src/aotTest/java/com/example/actuator/webmvc/ActuatorWebMvcApplicationAotTests.java b/actuator-webmvc/src/aotTest/java/com/example/actuator/webmvc/ActuatorWebMvcApplicationAotTests.java index 4d2c52ab..5313b62e 100644 --- a/actuator-webmvc/src/aotTest/java/com/example/actuator/webmvc/ActuatorWebMvcApplicationAotTests.java +++ b/actuator-webmvc/src/aotTest/java/com/example/actuator/webmvc/ActuatorWebMvcApplicationAotTests.java @@ -66,11 +66,14 @@ class ActuatorWebMvcApplicationAotTests { } @Test - void shouldHavePrometheusMetrics(WebTestClient client) { + void prometheusWorks(WebTestClient client) { client.get().uri("/actuator/prometheus").exchange().expectStatus().isOk().expectBody() .consumeWith((result) -> assertThat(new String(result.getResponseBodyContent())) - .contains("jvm_classes_loaded_classes ")); - + // Check custom timer + .contains("custom_timer_seconds_max 5.0").contains("custom_timer_seconds_count 1.0") + .contains("custom_timer_seconds_sum 5.0") + // Check JVM metric + .contains("# TYPE jvm_threads_peak_threads gauge")); } } diff --git a/actuator-webmvc/src/main/java/com/example/actuator/webmvc/RegisterCustomTimer.java b/actuator-webmvc/src/main/java/com/example/actuator/webmvc/RegisterCustomTimer.java new file mode 100644 index 00000000..c6c90b83 --- /dev/null +++ b/actuator-webmvc/src/main/java/com/example/actuator/webmvc/RegisterCustomTimer.java @@ -0,0 +1,24 @@ +package com.example.actuator.webmvc; + +import java.time.Duration; + +import io.micrometer.core.instrument.MeterRegistry; + +import org.springframework.boot.CommandLineRunner; +import org.springframework.stereotype.Component; + +@Component +class RegisterCustomTimer implements CommandLineRunner { + + private final MeterRegistry meterRegistry; + + RegisterCustomTimer(MeterRegistry meterRegistry) { + this.meterRegistry = meterRegistry; + } + + @Override + public void run(String... args) { + this.meterRegistry.timer("custom.timer").record(Duration.ofSeconds(5)); + } + +}