diff --git a/pom.xml b/pom.xml index cd2953a1a..e94b7a75d 100644 --- a/pom.xml +++ b/pom.xml @@ -32,24 +32,10 @@ spring-boot-starter-data-mongodb - org.springframework.boot - spring-boot-starter-actuator - - org.springframework.cloud spring-cloud-starter-zipkin 1.1.0.RELEASE - - io.prometheus - simpleclient - RELEASE - - - io.prometheus - simpleclient_common - RELEASE - org.springframework.data spring-data-rest-hal-browser diff --git a/src/main/java/works/weave/socks/cart/configuration/PrometheusEndpointContextConfiguration.java b/src/main/java/works/weave/socks/cart/configuration/PrometheusEndpointContextConfiguration.java deleted file mode 100644 index 9844b2fbc..000000000 --- a/src/main/java/works/weave/socks/cart/configuration/PrometheusEndpointContextConfiguration.java +++ /dev/null @@ -1,40 +0,0 @@ -package works.weave.socks.cart.configuration; - -import io.prometheus.client.CollectorRegistry; -import org.springframework.boot.actuate.autoconfigure.ExportMetricWriter; -import org.springframework.boot.actuate.autoconfigure.ManagementContextConfiguration; -import org.springframework.boot.actuate.condition.ConditionalOnEnabledEndpoint; -import org.springframework.boot.actuate.metrics.writer.MetricWriter; -import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; -import org.springframework.context.annotation.Bean; -import works.weave.socks.cart.controllers.PrometheusEndpoint; -import works.weave.socks.cart.controllers.PrometheusMvcEndpoint; -import works.weave.socks.cart.monitoring.PrometheusMetricWriter; - -@ManagementContextConfiguration -public class PrometheusEndpointContextConfiguration { - - @Bean - public works.weave.socks.cart.controllers.PrometheusEndpoint prometheusEndpoint(CollectorRegistry registry) { - return new PrometheusEndpoint(registry); - } - - @Bean - @ConditionalOnBean(PrometheusEndpoint.class) - @ConditionalOnEnabledEndpoint("prometheus") - PrometheusMvcEndpoint prometheusMvcEndpoint(PrometheusEndpoint prometheusEndpoint) { - return new PrometheusMvcEndpoint(prometheusEndpoint); - } - - @Bean - CollectorRegistry collectorRegistry() { - return new CollectorRegistry(); - } - - @Bean - @ExportMetricWriter - MetricWriter prometheusMetricWriter(CollectorRegistry registry) { - return new PrometheusMetricWriter(registry); - } - -} diff --git a/src/main/java/works/weave/socks/cart/controllers/PrometheusEndpoint.java b/src/main/java/works/weave/socks/cart/controllers/PrometheusEndpoint.java deleted file mode 100644 index 9960871d2..000000000 --- a/src/main/java/works/weave/socks/cart/controllers/PrometheusEndpoint.java +++ /dev/null @@ -1,30 +0,0 @@ -package works.weave.socks.cart.controllers; - -import io.prometheus.client.CollectorRegistry; -import io.prometheus.client.exporter.common.TextFormat; -import org.springframework.boot.actuate.endpoint.AbstractEndpoint; - -import java.io.IOException; -import java.io.StringWriter; -import java.io.Writer; - -public class PrometheusEndpoint extends AbstractEndpoint { - - private CollectorRegistry registry; - - public PrometheusEndpoint(CollectorRegistry registry) { - super("prometheus", false, true); - this.registry = registry; - } - - @Override - public String invoke() { - Writer writer = new StringWriter(); - try { - TextFormat.write004(writer, registry.metricFamilySamples()); - } catch (IOException e) { - e.printStackTrace(); - } - return writer.toString(); - } -} diff --git a/src/main/java/works/weave/socks/cart/controllers/PrometheusMvcEndpoint.java b/src/main/java/works/weave/socks/cart/controllers/PrometheusMvcEndpoint.java deleted file mode 100644 index 71f8b0a6c..000000000 --- a/src/main/java/works/weave/socks/cart/controllers/PrometheusMvcEndpoint.java +++ /dev/null @@ -1,31 +0,0 @@ -package works.weave.socks.cart.controllers; - -import io.prometheus.client.exporter.common.TextFormat; -import org.springframework.boot.actuate.endpoint.mvc.AbstractEndpointMvcAdapter; -import org.springframework.boot.actuate.endpoint.mvc.HypermediaDisabled; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.ResponseBody; - -import java.util.Collections; - -public class PrometheusMvcEndpoint extends AbstractEndpointMvcAdapter { - - public PrometheusMvcEndpoint(PrometheusEndpoint delegate) { - super(delegate); - } - - @RequestMapping(method = RequestMethod.GET, produces = TextFormat.CONTENT_TYPE_004) - @ResponseBody - @HypermediaDisabled - protected Object invoke() { - if (!getDelegate().isEnabled()) { - return new ResponseEntity<>( - Collections.singletonMap("message", "This endpoint is disabled"), - HttpStatus.NOT_FOUND); - } - return super.invoke(); - } -} diff --git a/src/main/java/works/weave/socks/cart/monitoring/PrometheusMetricWriter.java b/src/main/java/works/weave/socks/cart/monitoring/PrometheusMetricWriter.java deleted file mode 100644 index 2fc17e117..000000000 --- a/src/main/java/works/weave/socks/cart/monitoring/PrometheusMetricWriter.java +++ /dev/null @@ -1,54 +0,0 @@ -package works.weave.socks.cart.monitoring; - -import io.prometheus.client.CollectorRegistry; -import io.prometheus.client.Counter; -import io.prometheus.client.Gauge; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.actuate.metrics.Metric; -import org.springframework.boot.actuate.metrics.writer.Delta; -import org.springframework.boot.actuate.metrics.writer.MetricWriter; - -import java.util.concurrent.ConcurrentHashMap; -import java.util.concurrent.ConcurrentMap; - -public class PrometheusMetricWriter implements MetricWriter { - - private final ConcurrentMap counters = new ConcurrentHashMap<>(); - private final ConcurrentMap gauges = new ConcurrentHashMap<>(); - private CollectorRegistry registry; - - @Autowired - public PrometheusMetricWriter(CollectorRegistry registry) { - this.registry = registry; - } - - @Override - public void increment(Delta delta) { - counter(delta.getName()).inc(delta.getValue().doubleValue()); - } - - @Override - public void reset(String metricName) { - counter(metricName).clear(); - } - - @Override - public void set(Metric value) { - gauge(value.getName()).set(value.getValue().doubleValue()); - } - - private Counter counter(String name) { - String key = sanitizeName(name); - return counters.computeIfAbsent(key, k -> Counter.build().name(k).help(k).register(registry)); - } - - private Gauge gauge(String name) { - String key = sanitizeName(name); - return gauges.computeIfAbsent(key, k -> Gauge.build().name(k).help(k).register(registry)); - } - - private String sanitizeName(String name) { - return name.replaceAll("[^a-zA-Z0-9_]", "_"); - } - -}