aboutsummaryrefslogtreecommitdiffstats
path: root/cps-application/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'cps-application/src/main/java')
-rw-r--r--cps-application/src/main/java/org/onap/cps/Application.java2
-rw-r--r--cps-application/src/main/java/org/onap/cps/config/MicroMeterConfig.java105
2 files changed, 102 insertions, 5 deletions
diff --git a/cps-application/src/main/java/org/onap/cps/Application.java b/cps-application/src/main/java/org/onap/cps/Application.java
index 053139fcc8..62103bf368 100644
--- a/cps-application/src/main/java/org/onap/cps/Application.java
+++ b/cps-application/src/main/java/org/onap/cps/Application.java
@@ -22,9 +22,7 @@ package org.onap.cps;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
-import org.springframework.retry.annotation.EnableRetry;
-@EnableRetry
@SpringBootApplication
public class Application {
public static void main(final String[] args) {
diff --git a/cps-application/src/main/java/org/onap/cps/config/MicroMeterConfig.java b/cps-application/src/main/java/org/onap/cps/config/MicroMeterConfig.java
index 22194f3ad8..b85f391b8e 100644
--- a/cps-application/src/main/java/org/onap/cps/config/MicroMeterConfig.java
+++ b/cps-application/src/main/java/org/onap/cps/config/MicroMeterConfig.java
@@ -1,6 +1,6 @@
/*
* ============LICENSE_START=======================================================
- * Copyright (C) 2023 Nordix Foundation.
+ * Copyright (C) 2023-2025 Nordix Foundation.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -20,17 +20,116 @@
package org.onap.cps.config;
+import com.hazelcast.map.IMap;
+import io.github.mweirauch.micrometer.jvm.extras.ProcessMemoryMetrics;
+import io.github.mweirauch.micrometer.jvm.extras.ProcessThreadMetrics;
import io.micrometer.core.aop.TimedAspect;
+import io.micrometer.core.instrument.Gauge;
import io.micrometer.core.instrument.MeterRegistry;
+import io.micrometer.core.instrument.binder.MeterBinder;
+import lombok.RequiredArgsConstructor;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
+@RequiredArgsConstructor
public class MicroMeterConfig {
+ private static final String STATE_TAG = "state";
+ private static final String CM_HANDLE_STATE_GAUGE = "cmHandlesByState";
+ final IMap<String, Integer> cmHandlesByState;
+
+ @Bean
+ public TimedAspect timedAspect(final MeterRegistry meterRegistry) {
+ return new TimedAspect(meterRegistry);
+ }
+
+ @Bean
+ @ConditionalOnProperty("cps.monitoring.micrometer-jvm-extras")
+ public MeterBinder processMemoryMetrics() {
+ return new ProcessMemoryMetrics();
+ }
+
+ @Bean
+ @ConditionalOnProperty("cps.monitoring.micrometer-jvm-extras")
+ public MeterBinder processThreadMetrics() {
+ return new ProcessThreadMetrics();
+ }
+
+ /**
+ * Register gauge metric for cm handles with state 'advised'.
+ *
+ * @param meterRegistry meter registry
+ * @return cm handle state gauge
+ */
+ @Bean
+ public Gauge advisedCmHandles(final MeterRegistry meterRegistry) {
+ return Gauge.builder(CM_HANDLE_STATE_GAUGE, cmHandlesByState,
+ value -> cmHandlesByState.get("advisedCmHandlesCount"))
+ .tag(STATE_TAG, "ADVISED")
+ .description("Current number of cm handles in advised state")
+ .register(meterRegistry);
+ }
+
+ /**
+ * Register gauge metric for cm handles with state 'ready'.
+ *
+ * @param meterRegistry meter registry
+ * @return cm handle state gauge
+ */
+ @Bean
+ public Gauge readyCmHandles(final MeterRegistry meterRegistry) {
+ return Gauge.builder(CM_HANDLE_STATE_GAUGE, cmHandlesByState,
+ value -> cmHandlesByState.get("readyCmHandlesCount"))
+ .tag(STATE_TAG, "READY")
+ .description("Current number of cm handles in ready state")
+ .register(meterRegistry);
+ }
+
+ /**
+ * Register gauge metric for cm handles with state 'locked'.
+ *
+ * @param meterRegistry meter registry
+ * @return cm handle state gauge
+ */
+ @Bean
+ public Gauge lockedCmHandles(final MeterRegistry meterRegistry) {
+ return Gauge.builder(CM_HANDLE_STATE_GAUGE, cmHandlesByState,
+ value -> cmHandlesByState.get("lockedCmHandlesCount"))
+ .tag(STATE_TAG, "LOCKED")
+ .description("Current number of cm handles in locked state")
+ .register(meterRegistry);
+ }
+
+ /**
+ * Register gauge metric for cm handles with state 'deleting'.
+ *
+ * @param meterRegistry meter registry
+ * @return cm handle state gauge
+ */
+ @Bean
+ public Gauge deletingCmHandles(final MeterRegistry meterRegistry) {
+ return Gauge.builder(CM_HANDLE_STATE_GAUGE, cmHandlesByState,
+ value -> cmHandlesByState.get("deletingCmHandlesCount"))
+ .tag(STATE_TAG, "DELETING")
+ .description("Current number of cm handles in deleting state")
+ .register(meterRegistry);
+ }
+
+ /**
+ * Register gauge metric for cm handles with state 'deleted'.
+ *
+ * @param meterRegistry meter registry
+ * @return cm handle state gauge
+ */
@Bean
- public TimedAspect timedAspect(final MeterRegistry registry) {
- return new TimedAspect(registry);
+ public Gauge deletedCmHandles(final MeterRegistry meterRegistry) {
+ return Gauge.builder(CM_HANDLE_STATE_GAUGE, cmHandlesByState,
+ value -> cmHandlesByState.get("deletedCmHandlesCount"))
+ .tag(STATE_TAG, "DELETED")
+ .description("Number of cm handles that have been deleted since the application started")
+ .register(meterRegistry);
}
}