From d907c2636bf32979dea48348e41487685f776fc4 Mon Sep 17 00:00:00 2001 From: Filip Krzywka Date: Thu, 30 May 2019 09:58:19 +0200 Subject: Bind default metrics to registry in monitoring SDK Change-Id: I074d28355eebe1dfb04e9dff1cc9580e68f10f2b Issue-ID: DCAEGEN2-1522 Signed-off-by: Filip Krzywka --- .../moher/metrics/api/MetricsFactory.java | 16 +++++++++++++++- .../standardization/moher/metrics/impl/MetricsImpl.java | 13 +++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) (limited to 'standardization/moher-api/metrics/src/main') diff --git a/standardization/moher-api/metrics/src/main/java/org/onap/dcaegen2/services/sdk/standardization/moher/metrics/api/MetricsFactory.java b/standardization/moher-api/metrics/src/main/java/org/onap/dcaegen2/services/sdk/standardization/moher/metrics/api/MetricsFactory.java index 359f7470..33772c2f 100644 --- a/standardization/moher-api/metrics/src/main/java/org/onap/dcaegen2/services/sdk/standardization/moher/metrics/api/MetricsFactory.java +++ b/standardization/moher-api/metrics/src/main/java/org/onap/dcaegen2/services/sdk/standardization/moher/metrics/api/MetricsFactory.java @@ -20,6 +20,7 @@ package org.onap.dcaegen2.services.sdk.standardization.moher.metrics.api; +import io.micrometer.core.instrument.binder.MeterBinder; import io.micrometer.prometheus.PrometheusConfig; import io.micrometer.prometheus.PrometheusMeterRegistry; import org.onap.dcaegen2.services.sdk.standardization.moher.metrics.impl.MetricsImpl; @@ -42,6 +43,14 @@ public class MetricsFactory { /** * Method for creating default Prometheus registry. + *

+ * Client is expected to populate registry with custom metrics. + * Exact procedure can be found at Micrometer project site. + *

+ *

+ * It is recommended to search through available implementations of {@link MeterBinder} + * as there exists a plenty of them for most common use cases. + *

* * @since 1.2.0 */ @@ -51,11 +60,16 @@ public class MetricsFactory { /** * Method for creating {@link Metrics} with configured Prometheus registry. + *

+ * Returned object will add to registry few default JVM (memory and threads usage, garbage collection) + * and system metrics (CPU usage). For exact list of metrics added, please refer to implementation. * * @param registry Prometheus registry to be used * @since 1.2.0 */ public static Metrics createMetrics(PrometheusMeterRegistry registry) { - return new MetricsImpl(registry); + MetricsImpl metrics = new MetricsImpl(registry); + metrics.configureDefaultMetrics(); + return metrics; } } diff --git a/standardization/moher-api/metrics/src/main/java/org/onap/dcaegen2/services/sdk/standardization/moher/metrics/impl/MetricsImpl.java b/standardization/moher-api/metrics/src/main/java/org/onap/dcaegen2/services/sdk/standardization/moher/metrics/impl/MetricsImpl.java index 068a2db4..5fe4e12a 100644 --- a/standardization/moher-api/metrics/src/main/java/org/onap/dcaegen2/services/sdk/standardization/moher/metrics/impl/MetricsImpl.java +++ b/standardization/moher-api/metrics/src/main/java/org/onap/dcaegen2/services/sdk/standardization/moher/metrics/impl/MetricsImpl.java @@ -21,6 +21,11 @@ package org.onap.dcaegen2.services.sdk.standardization.moher.metrics.impl; +import io.micrometer.core.instrument.binder.jvm.ClassLoaderMetrics; +import io.micrometer.core.instrument.binder.jvm.JvmGcMetrics; +import io.micrometer.core.instrument.binder.jvm.JvmMemoryMetrics; +import io.micrometer.core.instrument.binder.jvm.JvmThreadMetrics; +import io.micrometer.core.instrument.binder.system.ProcessorMetrics; import io.micrometer.prometheus.PrometheusMeterRegistry; import org.onap.dcaegen2.services.sdk.standardization.moher.metrics.api.Metrics; import reactor.core.publisher.Flux; @@ -45,4 +50,12 @@ public class MetricsImpl implements Metrics { return Flux.interval(interval) .map((l) -> registry.scrape()); } + + public void configureDefaultMetrics(){ + new ClassLoaderMetrics().bindTo(registry); + new JvmThreadMetrics().bindTo(registry); + new JvmMemoryMetrics().bindTo(registry); + new JvmGcMetrics().bindTo(registry); + new ProcessorMetrics().bindTo(registry); + } } -- cgit 1.2.3-korg