From 1ac198452720740a14d2157f13bf19a4c3f8c839 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Armesto?= Date: Mon, 24 Oct 2016 14:14:03 +0200 Subject: [PATCH] Add annotation to easily export prometheus metrics through the prometheus endpoint --- .../spring/boot/EnablePrometheusEndpoint.java | 2 +- .../boot/EnableSpringBootMetricsCollector.java | 17 +++++++++++++++++ ...ava => PrometheusEndpointConfiguration.java} | 2 +- .../boot/PrometheusMetricsConfiguration.java | 17 +++++++++++++++++ 4 files changed, 36 insertions(+), 2 deletions(-) create mode 100644 simpleclient_spring_boot/src/main/java/io/prometheus/client/spring/boot/EnableSpringBootMetricsCollector.java rename simpleclient_spring_boot/src/main/java/io/prometheus/client/spring/boot/{PrometheusConfiguration.java => PrometheusEndpointConfiguration.java} (89%) create mode 100644 simpleclient_spring_boot/src/main/java/io/prometheus/client/spring/boot/PrometheusMetricsConfiguration.java diff --git a/simpleclient_spring_boot/src/main/java/io/prometheus/client/spring/boot/EnablePrometheusEndpoint.java b/simpleclient_spring_boot/src/main/java/io/prometheus/client/spring/boot/EnablePrometheusEndpoint.java index 3b2e893f7..e799756e9 100644 --- a/simpleclient_spring_boot/src/main/java/io/prometheus/client/spring/boot/EnablePrometheusEndpoint.java +++ b/simpleclient_spring_boot/src/main/java/io/prometheus/client/spring/boot/EnablePrometheusEndpoint.java @@ -38,7 +38,7 @@ @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented -@Import(PrometheusConfiguration.class) +@Import(PrometheusEndpointConfiguration.class) public @interface EnablePrometheusEndpoint { } diff --git a/simpleclient_spring_boot/src/main/java/io/prometheus/client/spring/boot/EnableSpringBootMetricsCollector.java b/simpleclient_spring_boot/src/main/java/io/prometheus/client/spring/boot/EnableSpringBootMetricsCollector.java new file mode 100644 index 000000000..c9a52850c --- /dev/null +++ b/simpleclient_spring_boot/src/main/java/io/prometheus/client/spring/boot/EnableSpringBootMetricsCollector.java @@ -0,0 +1,17 @@ +package io.prometheus.client.spring.boot; + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; +import org.springframework.context.annotation.Import; + + +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +@Documented +@Import(PrometheusMetricsConfiguration.class) +public @interface EnableSpringBootMetricsCollector { + +} diff --git a/simpleclient_spring_boot/src/main/java/io/prometheus/client/spring/boot/PrometheusConfiguration.java b/simpleclient_spring_boot/src/main/java/io/prometheus/client/spring/boot/PrometheusEndpointConfiguration.java similarity index 89% rename from simpleclient_spring_boot/src/main/java/io/prometheus/client/spring/boot/PrometheusConfiguration.java rename to simpleclient_spring_boot/src/main/java/io/prometheus/client/spring/boot/PrometheusEndpointConfiguration.java index f6666f984..df34ff08f 100644 --- a/simpleclient_spring_boot/src/main/java/io/prometheus/client/spring/boot/PrometheusConfiguration.java +++ b/simpleclient_spring_boot/src/main/java/io/prometheus/client/spring/boot/PrometheusEndpointConfiguration.java @@ -5,7 +5,7 @@ import org.springframework.context.annotation.Configuration; @Configuration -class PrometheusConfiguration { +class PrometheusEndpointConfiguration { @Bean public PrometheusEndpoint prometheusEndpoint() { diff --git a/simpleclient_spring_boot/src/main/java/io/prometheus/client/spring/boot/PrometheusMetricsConfiguration.java b/simpleclient_spring_boot/src/main/java/io/prometheus/client/spring/boot/PrometheusMetricsConfiguration.java new file mode 100644 index 000000000..9d72a1a3f --- /dev/null +++ b/simpleclient_spring_boot/src/main/java/io/prometheus/client/spring/boot/PrometheusMetricsConfiguration.java @@ -0,0 +1,17 @@ +package io.prometheus.client.spring.boot; + +import java.util.Collection; +import org.springframework.boot.actuate.endpoint.PublicMetrics; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +class PrometheusMetricsConfiguration { + + @Bean + public SpringBootMetricsCollector springBootMetricsCollector(Collection publicMetrics) { + SpringBootMetricsCollector springBootMetricsCollector = new SpringBootMetricsCollector(publicMetrics); + springBootMetricsCollector.register(); + return springBootMetricsCollector; + } +}