diff options
author | Filip Krzywka <filip.krzywka@nokia.com> | 2019-05-30 09:58:19 +0200 |
---|---|---|
committer | Filip Krzywka <filip.krzywka@nokia.com> | 2019-06-03 10:09:05 +0200 |
commit | d907c2636bf32979dea48348e41487685f776fc4 (patch) | |
tree | 68188706f15ef8841c110a6c7939063f6f7b1b6a /standardization/moher-api/metrics/src/main | |
parent | da54f3e4c7e825908ef332e7913e1c4eb4fa82d1 (diff) |
Bind default metrics to registry in monitoring SDK
Change-Id: I074d28355eebe1dfb04e9dff1cc9580e68f10f2b
Issue-ID: DCAEGEN2-1522
Signed-off-by: Filip Krzywka <filip.krzywka@nokia.com>
Diffstat (limited to 'standardization/moher-api/metrics/src/main')
2 files changed, 28 insertions, 1 deletions
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. + * <p> + * Client is expected to populate registry with custom metrics. + * Exact procedure can be found at Micrometer project site. + * </p> + * <p> + * It is recommended to search through available implementations of {@link MeterBinder} + * as there exists a plenty of them for most common use cases. + * </p> * * @since 1.2.0 */ @@ -51,11 +60,16 @@ public class MetricsFactory { /** * Method for creating {@link Metrics} with configured Prometheus registry. + * <p> + * 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); + } } |