From e0a3e6a14f54c11e3a68b7759f110586aed5e861 Mon Sep 17 00:00:00 2001 From: "michele.artini" Date: Fri, 26 Nov 2021 16:31:31 +0100 Subject: [PATCH 1/4] first temptative --- .../organizations/MainApplication.java | 2 +- .../organizations/MockSecurityConfig.java | 2 +- .../OAuth2WebSecurityConfig.java | 2 +- .../controller/KpiMetricsController.java | 33 +++++++++++++++++ .../metrics/ValidOrganizationsMetric.java | 3 ++ .../eu/dnetlib/common/metrics/MetricInfo.java | 4 +-- .../dnetlib/common/metrics/MetricUtils.java | 35 +++++++++++++++++++ 7 files changed, 75 insertions(+), 6 deletions(-) create mode 100644 apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/controller/KpiMetricsController.java create mode 100644 libs/dnet-apps-common/src/main/java/eu/dnetlib/common/metrics/MetricUtils.java diff --git a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/MainApplication.java b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/MainApplication.java index 7e24b9d0..ec4fa96f 100644 --- a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/MainApplication.java +++ b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/MainApplication.java @@ -12,7 +12,7 @@ import springfox.documentation.service.ApiInfo; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; -@SpringBootApplication +@SpringBootApplication(scanBasePackages = "eu.dnetlib") @EnableSwagger2 @EnableCaching @EnableScheduling diff --git a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/MockSecurityConfig.java b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/MockSecurityConfig.java index 17fc36c2..dccbd71b 100644 --- a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/MockSecurityConfig.java +++ b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/MockSecurityConfig.java @@ -49,7 +49,7 @@ public class MockSecurityConfig extends WebSecurityConfigurerAdapter { .hasAnyRole(OpenOrgsConstants.VALID_ROLES) .antMatchers("/registration_api/**") .hasRole(OpenOrgsConstants.NOT_AUTORIZED_ROLE) - .antMatchers("/common/**", "/resources/**", "/webjars/**", "/metrics", "/health", "/dbmodel/**") + .antMatchers("/common/**", "/resources/**", "/webjars/**", "/metrics", "/health", "/kpis", "/dbmodel/**") .permitAll() .antMatchers("/oa_api/**") .permitAll() diff --git a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/OAuth2WebSecurityConfig.java b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/OAuth2WebSecurityConfig.java index 7125793a..2ff636dc 100644 --- a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/OAuth2WebSecurityConfig.java +++ b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/OAuth2WebSecurityConfig.java @@ -62,7 +62,7 @@ public class OAuth2WebSecurityConfig extends WebSecurityConfigurerAdapter { .hasAnyRole(OpenOrgsConstants.VALID_ROLES) .antMatchers("/registration_api/**") .hasRole(OpenOrgsConstants.NOT_AUTORIZED_ROLE) - .antMatchers("/", "/common/**", "/resources/**", "/webjars/**", "/metrics", "/health", "/dbmodel/**") + .antMatchers("/", "/common/**", "/resources/**", "/webjars/**", "/metrics", "/health", "/kpis", "/dbmodel/**") .permitAll() .antMatchers("/oa_api/**") .hasIpAddress(openaireApiValidSubnet) diff --git a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/controller/KpiMetricsController.java b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/controller/KpiMetricsController.java new file mode 100644 index 00000000..a5336c60 --- /dev/null +++ b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/controller/KpiMetricsController.java @@ -0,0 +1,33 @@ +package eu.dnetlib.organizations.controller; + +import static org.springframework.http.HttpHeaders.CONTENT_TYPE; + +import java.util.Set; + +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.RequestHeader; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.ResponseBody; + +import eu.dnetlib.common.metrics.MetricUtils; +import io.prometheus.client.exporter.common.TextFormat; + +@Controller +public class KpiMetricsController { + + @ResponseBody + @RequestMapping(value = "/kpis", method = RequestMethod.GET, produces = "*/*") + public ResponseEntity kpiMetrics( + @RequestParam(value = "name[]", required = false, defaultValue = "") final Set name, + @RequestHeader(value = "Accept", required = false, defaultValue = "") final String accept) { + + final String contentType = TextFormat.chooseContentType(accept); + final String result = MetricUtils.output(name, contentType); + return ResponseEntity.ok() + .header(CONTENT_TYPE, contentType) + .body(result); + } +} diff --git a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/metrics/ValidOrganizationsMetric.java b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/metrics/ValidOrganizationsMetric.java index f36af5a7..561a75bb 100644 --- a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/metrics/ValidOrganizationsMetric.java +++ b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/metrics/ValidOrganizationsMetric.java @@ -15,6 +15,9 @@ public class ValidOrganizationsMetric extends MetricInfo { @Override public double obtainValue() { + + System.out.println("xxxxxxxxxxxxxx"); + return organizationRepository.countByStatus(OrganizationStatus.approved.toString()); } diff --git a/libs/dnet-apps-common/src/main/java/eu/dnetlib/common/metrics/MetricInfo.java b/libs/dnet-apps-common/src/main/java/eu/dnetlib/common/metrics/MetricInfo.java index a8f59312..c15e04d0 100644 --- a/libs/dnet-apps-common/src/main/java/eu/dnetlib/common/metrics/MetricInfo.java +++ b/libs/dnet-apps-common/src/main/java/eu/dnetlib/common/metrics/MetricInfo.java @@ -6,8 +6,6 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.BeanNameAware; -import io.micrometer.core.instrument.Metrics; - public abstract class MetricInfo implements BeanNameAware { private static final Log log = LogFactory.getLog(MetricInfo.class); @@ -28,7 +26,7 @@ public abstract class MetricInfo implements BeanNameAware { @PostConstruct public void register() { log.info("Prometheus - new metric registered: " + getBeanName()); - Metrics.gauge(getBeanName(), this, o -> obtainValue()); + MetricUtils.register(beanName, this); } } diff --git a/libs/dnet-apps-common/src/main/java/eu/dnetlib/common/metrics/MetricUtils.java b/libs/dnet-apps-common/src/main/java/eu/dnetlib/common/metrics/MetricUtils.java new file mode 100644 index 00000000..43c1d87f --- /dev/null +++ b/libs/dnet-apps-common/src/main/java/eu/dnetlib/common/metrics/MetricUtils.java @@ -0,0 +1,35 @@ +package eu.dnetlib.common.metrics; + +import java.io.IOException; +import java.io.StringWriter; +import java.io.Writer; +import java.util.Set; + +import io.micrometer.core.instrument.composite.CompositeMeterRegistry; +import io.prometheus.client.CollectorRegistry; +import io.prometheus.client.Gauge; +import io.prometheus.client.exporter.common.TextFormat; + +public class MetricUtils { + + private static final CompositeMeterRegistry meterRegistry = new CompositeMeterRegistry(); + private static final CollectorRegistry collectorRegistry = new CollectorRegistry(true); + + public static MetricInfo register(final String name, final MetricInfo metric) { + final MetricInfo meter = meterRegistry.gauge(name, metric, MetricInfo::obtainValue); + Gauge.build(name, name).register(collectorRegistry); + return meter; + } + + public static String output(final Set metricsToInclude, final String contentType) { + try { + final Writer writer = new StringWriter(); + TextFormat.writeFormat(contentType, writer, collectorRegistry.filteredMetricFamilySamples(metricsToInclude)); + return writer.toString(); + } catch (final IOException e) { + // This actually never happens since StringWriter::write() doesn't throw any IOException + throw new RuntimeException("Writing metrics failed", e); + } + } + +} From e127a7e73c002455c0a5a209277db9497e457e0b Mon Sep 17 00:00:00 2001 From: "michele.artini" Date: Mon, 29 Nov 2021 13:37:27 +0100 Subject: [PATCH 2/4] /kpis metrics endpoint --- .../LiteratureBrokerServiceConfiguration.java | 2 + .../dnetlib/broker/BrokerConfiguration.java | 2 + .../organizations/MainApplication.java | 4 +- .../metrics/ValidOrganizationsMetric.java | 5 +-- .../common/metrics}/KpiMetricsController.java | 17 ++++---- .../eu/dnetlib/common/metrics/MetricInfo.java | 29 +------------- .../dnetlib/common/metrics/MetricUtils.java | 39 +++++++++++++------ .../common/metrics/LastUpdateMetric.java | 2 +- .../TotalDatasourcesWithEventsMetric.java | 2 +- ...talDatasourcesWithSubscriptionsMetric.java | 2 +- .../common/metrics/TotalEventsMetric.java | 2 +- .../metrics/TotalNotificationsMetric.java | 2 +- .../metrics/TotalSubscribersMetric.java | 2 +- .../metrics/TotalSubscriptionsMetric.java | 2 +- 14 files changed, 52 insertions(+), 60 deletions(-) rename {apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/controller => libs/dnet-apps-common/src/main/java/eu/dnetlib/common/metrics}/KpiMetricsController.java (62%) diff --git a/apps/dhp-broker-application/src/main/java/eu/dnetlib/broker/LiteratureBrokerServiceConfiguration.java b/apps/dhp-broker-application/src/main/java/eu/dnetlib/broker/LiteratureBrokerServiceConfiguration.java index 351fb623..a92f8862 100644 --- a/apps/dhp-broker-application/src/main/java/eu/dnetlib/broker/LiteratureBrokerServiceConfiguration.java +++ b/apps/dhp-broker-application/src/main/java/eu/dnetlib/broker/LiteratureBrokerServiceConfiguration.java @@ -4,6 +4,7 @@ import org.elasticsearch.client.RestHighLevelClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.EnableCaching; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.data.elasticsearch.client.ClientConfiguration; import org.springframework.data.elasticsearch.client.RestClients; @@ -25,6 +26,7 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2; @EnableElasticsearchRepositories(basePackageClasses = { Event.class, Notification.class }) +@ComponentScan(basePackages = "eu.dnetlib") public class LiteratureBrokerServiceConfiguration extends AbstractElasticsearchConfiguration { @Autowired diff --git a/apps/dhp-broker-public-application/src/main/java/eu/dnetlib/broker/BrokerConfiguration.java b/apps/dhp-broker-public-application/src/main/java/eu/dnetlib/broker/BrokerConfiguration.java index d8c43662..b4721971 100644 --- a/apps/dhp-broker-public-application/src/main/java/eu/dnetlib/broker/BrokerConfiguration.java +++ b/apps/dhp-broker-public-application/src/main/java/eu/dnetlib/broker/BrokerConfiguration.java @@ -4,6 +4,7 @@ import org.elasticsearch.client.RestHighLevelClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.EnableCaching; import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.data.elasticsearch.client.ClientConfiguration; import org.springframework.data.elasticsearch.client.RestClients; @@ -25,6 +26,7 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2; @EnableElasticsearchRepositories(basePackageClasses = { Event.class, Notification.class }) +@ComponentScan(basePackages = "eu.dnetlib") public class BrokerConfiguration extends AbstractElasticsearchConfiguration { @Autowired diff --git a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/MainApplication.java b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/MainApplication.java index ec4fa96f..f75b9eef 100644 --- a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/MainApplication.java +++ b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/MainApplication.java @@ -3,6 +3,7 @@ package eu.dnetlib.organizations; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCaching; +import org.springframework.context.annotation.ComponentScan; import org.springframework.scheduling.annotation.EnableScheduling; import eu.dnetlib.common.app.AbstractDnetApp; @@ -12,10 +13,11 @@ import springfox.documentation.service.ApiInfo; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; -@SpringBootApplication(scanBasePackages = "eu.dnetlib") +@SpringBootApplication @EnableSwagger2 @EnableCaching @EnableScheduling +@ComponentScan(basePackages = "eu.dnetlib") public class MainApplication extends AbstractDnetApp { public static void main(final String[] args) { diff --git a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/metrics/ValidOrganizationsMetric.java b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/metrics/ValidOrganizationsMetric.java index 561a75bb..a7b41909 100644 --- a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/metrics/ValidOrganizationsMetric.java +++ b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/metrics/ValidOrganizationsMetric.java @@ -8,16 +8,13 @@ import eu.dnetlib.organizations.repository.OrganizationRepository; import eu.dnetlib.organizations.utils.OrganizationStatus; @Component("valid_organizations_total") -public class ValidOrganizationsMetric extends MetricInfo { +public class ValidOrganizationsMetric implements MetricInfo { @Autowired private OrganizationRepository organizationRepository; @Override public double obtainValue() { - - System.out.println("xxxxxxxxxxxxxx"); - return organizationRepository.countByStatus(OrganizationStatus.approved.toString()); } diff --git a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/controller/KpiMetricsController.java b/libs/dnet-apps-common/src/main/java/eu/dnetlib/common/metrics/KpiMetricsController.java similarity index 62% rename from apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/controller/KpiMetricsController.java rename to libs/dnet-apps-common/src/main/java/eu/dnetlib/common/metrics/KpiMetricsController.java index a5336c60..ed8e0e09 100644 --- a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/controller/KpiMetricsController.java +++ b/libs/dnet-apps-common/src/main/java/eu/dnetlib/common/metrics/KpiMetricsController.java @@ -1,31 +1,30 @@ -package eu.dnetlib.organizations.controller; +package eu.dnetlib.common.metrics; import static org.springframework.http.HttpHeaders.CONTENT_TYPE; -import java.util.Set; - +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestHeader; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; -import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; -import eu.dnetlib.common.metrics.MetricUtils; import io.prometheus.client.exporter.common.TextFormat; @Controller public class KpiMetricsController { + @Autowired + private MetricUtils metricUtils; + @ResponseBody @RequestMapping(value = "/kpis", method = RequestMethod.GET, produces = "*/*") - public ResponseEntity kpiMetrics( - @RequestParam(value = "name[]", required = false, defaultValue = "") final Set name, - @RequestHeader(value = "Accept", required = false, defaultValue = "") final String accept) { + public ResponseEntity kpiMetrics(@RequestHeader(value = "Accept", required = false, defaultValue = "") final String accept) { final String contentType = TextFormat.chooseContentType(accept); - final String result = MetricUtils.output(name, contentType); + final String result = metricUtils.output(contentType); + return ResponseEntity.ok() .header(CONTENT_TYPE, contentType) .body(result); diff --git a/libs/dnet-apps-common/src/main/java/eu/dnetlib/common/metrics/MetricInfo.java b/libs/dnet-apps-common/src/main/java/eu/dnetlib/common/metrics/MetricInfo.java index c15e04d0..86c55243 100644 --- a/libs/dnet-apps-common/src/main/java/eu/dnetlib/common/metrics/MetricInfo.java +++ b/libs/dnet-apps-common/src/main/java/eu/dnetlib/common/metrics/MetricInfo.java @@ -1,32 +1,7 @@ package eu.dnetlib.common.metrics; -import javax.annotation.PostConstruct; +public abstract interface MetricInfo { -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.springframework.beans.factory.BeanNameAware; - -public abstract class MetricInfo implements BeanNameAware { - - private static final Log log = LogFactory.getLog(MetricInfo.class); - - private String beanName; - - abstract public double obtainValue(); - - public String getBeanName() { - return beanName; - } - - @Override - public void setBeanName(final String beanName) { - this.beanName = beanName; - } - - @PostConstruct - public void register() { - log.info("Prometheus - new metric registered: " + getBeanName()); - MetricUtils.register(beanName, this); - } + double obtainValue(); } diff --git a/libs/dnet-apps-common/src/main/java/eu/dnetlib/common/metrics/MetricUtils.java b/libs/dnet-apps-common/src/main/java/eu/dnetlib/common/metrics/MetricUtils.java index 43c1d87f..1f61f00a 100644 --- a/libs/dnet-apps-common/src/main/java/eu/dnetlib/common/metrics/MetricUtils.java +++ b/libs/dnet-apps-common/src/main/java/eu/dnetlib/common/metrics/MetricUtils.java @@ -3,28 +3,43 @@ package eu.dnetlib.common.metrics; import java.io.IOException; import java.io.StringWriter; import java.io.Writer; -import java.util.Set; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; +import java.util.Map; -import io.micrometer.core.instrument.composite.CompositeMeterRegistry; -import io.prometheus.client.CollectorRegistry; -import io.prometheus.client.Gauge; +import javax.annotation.PostConstruct; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import io.micrometer.core.instrument.Metrics; +import io.prometheus.client.Collector.MetricFamilySamples; +import io.prometheus.client.GaugeMetricFamily; import io.prometheus.client.exporter.common.TextFormat; +@Component public class MetricUtils { - private static final CompositeMeterRegistry meterRegistry = new CompositeMeterRegistry(); - private static final CollectorRegistry collectorRegistry = new CollectorRegistry(true); + @Autowired(required = false) + private Map kpiMetrics; - public static MetricInfo register(final String name, final MetricInfo metric) { - final MetricInfo meter = meterRegistry.gauge(name, metric, MetricInfo::obtainValue); - Gauge.build(name, name).register(collectorRegistry); - return meter; + @PostConstruct + public void registerToMainEndpoint() { + if (kpiMetrics != null) { + kpiMetrics.forEach((k, v) -> Metrics.gauge(k, v, o -> o.obtainValue())); + } } - public static String output(final Set metricsToInclude, final String contentType) { + public String output(final String contentType) { + try { + final List samples = new ArrayList<>(); + if (kpiMetrics != null) { + kpiMetrics.forEach((k, v) -> samples.add(new GaugeMetricFamily(k, "", v.obtainValue()))); + } final Writer writer = new StringWriter(); - TextFormat.writeFormat(contentType, writer, collectorRegistry.filteredMetricFamilySamples(metricsToInclude)); + TextFormat.writeFormat(contentType, writer, Collections.enumeration(samples)); return writer.toString(); } catch (final IOException e) { // This actually never happens since StringWriter::write() doesn't throw any IOException diff --git a/libs/dnet-broker-apps-common/src/main/java/eu/dnetlib/broker/common/metrics/LastUpdateMetric.java b/libs/dnet-broker-apps-common/src/main/java/eu/dnetlib/broker/common/metrics/LastUpdateMetric.java index a5fea312..e04ec5ec 100644 --- a/libs/dnet-broker-apps-common/src/main/java/eu/dnetlib/broker/common/metrics/LastUpdateMetric.java +++ b/libs/dnet-broker-apps-common/src/main/java/eu/dnetlib/broker/common/metrics/LastUpdateMetric.java @@ -6,7 +6,7 @@ import org.springframework.stereotype.Component; import eu.dnetlib.common.metrics.MetricInfo; @Component("provide_broker_last_metrics_updater_run_timestamp_seconds") -public class LastUpdateMetric extends MetricInfo { +public class LastUpdateMetric implements MetricInfo { @Autowired private MetricsCacheUtils metricsCacheUtils; diff --git a/libs/dnet-broker-apps-common/src/main/java/eu/dnetlib/broker/common/metrics/TotalDatasourcesWithEventsMetric.java b/libs/dnet-broker-apps-common/src/main/java/eu/dnetlib/broker/common/metrics/TotalDatasourcesWithEventsMetric.java index 031935f7..28f213d6 100644 --- a/libs/dnet-broker-apps-common/src/main/java/eu/dnetlib/broker/common/metrics/TotalDatasourcesWithEventsMetric.java +++ b/libs/dnet-broker-apps-common/src/main/java/eu/dnetlib/broker/common/metrics/TotalDatasourcesWithEventsMetric.java @@ -6,7 +6,7 @@ import org.springframework.stereotype.Component; import eu.dnetlib.common.metrics.MetricInfo; @Component("provide_broker_datasources_with_events") -public class TotalDatasourcesWithEventsMetric extends MetricInfo { +public class TotalDatasourcesWithEventsMetric implements MetricInfo { @Autowired private MetricsCacheUtils metricsCacheUtils; diff --git a/libs/dnet-broker-apps-common/src/main/java/eu/dnetlib/broker/common/metrics/TotalDatasourcesWithSubscriptionsMetric.java b/libs/dnet-broker-apps-common/src/main/java/eu/dnetlib/broker/common/metrics/TotalDatasourcesWithSubscriptionsMetric.java index 6c8f257d..0bc432e3 100644 --- a/libs/dnet-broker-apps-common/src/main/java/eu/dnetlib/broker/common/metrics/TotalDatasourcesWithSubscriptionsMetric.java +++ b/libs/dnet-broker-apps-common/src/main/java/eu/dnetlib/broker/common/metrics/TotalDatasourcesWithSubscriptionsMetric.java @@ -6,7 +6,7 @@ import org.springframework.stereotype.Component; import eu.dnetlib.common.metrics.MetricInfo; @Component("provide_broker_datasources_with_subscriptions") -public class TotalDatasourcesWithSubscriptionsMetric extends MetricInfo { +public class TotalDatasourcesWithSubscriptionsMetric implements MetricInfo { @Autowired private MetricsCacheUtils metricsCacheUtils; diff --git a/libs/dnet-broker-apps-common/src/main/java/eu/dnetlib/broker/common/metrics/TotalEventsMetric.java b/libs/dnet-broker-apps-common/src/main/java/eu/dnetlib/broker/common/metrics/TotalEventsMetric.java index 3b063b9d..756eadb2 100644 --- a/libs/dnet-broker-apps-common/src/main/java/eu/dnetlib/broker/common/metrics/TotalEventsMetric.java +++ b/libs/dnet-broker-apps-common/src/main/java/eu/dnetlib/broker/common/metrics/TotalEventsMetric.java @@ -6,7 +6,7 @@ import org.springframework.stereotype.Component; import eu.dnetlib.common.metrics.MetricInfo; @Component("provide_broker_events") -public class TotalEventsMetric extends MetricInfo { +public class TotalEventsMetric implements MetricInfo { @Autowired private MetricsCacheUtils metricsCacheUtils; diff --git a/libs/dnet-broker-apps-common/src/main/java/eu/dnetlib/broker/common/metrics/TotalNotificationsMetric.java b/libs/dnet-broker-apps-common/src/main/java/eu/dnetlib/broker/common/metrics/TotalNotificationsMetric.java index 33c66d0e..856e2219 100644 --- a/libs/dnet-broker-apps-common/src/main/java/eu/dnetlib/broker/common/metrics/TotalNotificationsMetric.java +++ b/libs/dnet-broker-apps-common/src/main/java/eu/dnetlib/broker/common/metrics/TotalNotificationsMetric.java @@ -6,7 +6,7 @@ import org.springframework.stereotype.Component; import eu.dnetlib.common.metrics.MetricInfo; @Component("provide_broker_notifications") -public class TotalNotificationsMetric extends MetricInfo { +public class TotalNotificationsMetric implements MetricInfo { @Autowired private MetricsCacheUtils metricsCacheUtils; diff --git a/libs/dnet-broker-apps-common/src/main/java/eu/dnetlib/broker/common/metrics/TotalSubscribersMetric.java b/libs/dnet-broker-apps-common/src/main/java/eu/dnetlib/broker/common/metrics/TotalSubscribersMetric.java index 0c6bf341..12388382 100644 --- a/libs/dnet-broker-apps-common/src/main/java/eu/dnetlib/broker/common/metrics/TotalSubscribersMetric.java +++ b/libs/dnet-broker-apps-common/src/main/java/eu/dnetlib/broker/common/metrics/TotalSubscribersMetric.java @@ -6,7 +6,7 @@ import org.springframework.stereotype.Component; import eu.dnetlib.common.metrics.MetricInfo; @Component("provide_broker_subscribers") -public class TotalSubscribersMetric extends MetricInfo { +public class TotalSubscribersMetric implements MetricInfo { @Autowired private MetricsCacheUtils metricsCacheUtils; diff --git a/libs/dnet-broker-apps-common/src/main/java/eu/dnetlib/broker/common/metrics/TotalSubscriptionsMetric.java b/libs/dnet-broker-apps-common/src/main/java/eu/dnetlib/broker/common/metrics/TotalSubscriptionsMetric.java index 8ee6bf25..91f737a2 100644 --- a/libs/dnet-broker-apps-common/src/main/java/eu/dnetlib/broker/common/metrics/TotalSubscriptionsMetric.java +++ b/libs/dnet-broker-apps-common/src/main/java/eu/dnetlib/broker/common/metrics/TotalSubscriptionsMetric.java @@ -6,7 +6,7 @@ import org.springframework.stereotype.Component; import eu.dnetlib.common.metrics.MetricInfo; @Component("provide_broker_subscriptions") -public class TotalSubscriptionsMetric extends MetricInfo { +public class TotalSubscriptionsMetric implements MetricInfo { @Autowired private MetricsCacheUtils metricsCacheUtils; From 3e84eac3cbe6c6fe532ace492074889e54582daa Mon Sep 17 00:00:00 2001 From: "michele.artini" Date: Mon, 29 Nov 2021 14:43:45 +0100 Subject: [PATCH 3/4] logf --- .../main/java/eu/dnetlib/common/metrics/MetricUtils.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/libs/dnet-apps-common/src/main/java/eu/dnetlib/common/metrics/MetricUtils.java b/libs/dnet-apps-common/src/main/java/eu/dnetlib/common/metrics/MetricUtils.java index 1f61f00a..81dd6924 100644 --- a/libs/dnet-apps-common/src/main/java/eu/dnetlib/common/metrics/MetricUtils.java +++ b/libs/dnet-apps-common/src/main/java/eu/dnetlib/common/metrics/MetricUtils.java @@ -10,6 +10,9 @@ import java.util.Map; import javax.annotation.PostConstruct; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -24,10 +27,13 @@ public class MetricUtils { @Autowired(required = false) private Map kpiMetrics; + private static final Log log = LogFactory.getLog(MetricUtils.class); + @PostConstruct public void registerToMainEndpoint() { if (kpiMetrics != null) { kpiMetrics.forEach((k, v) -> Metrics.gauge(k, v, o -> o.obtainValue())); + log.info("KPI METRICS REGISTERED: " + StringUtils.join(kpiMetrics.keySet(), ", ")); } } From 5833884fb36a3658963e6220dd20b81611051dd7 Mon Sep 17 00:00:00 2001 From: "michele.artini" Date: Tue, 30 Nov 2021 14:08:55 +0100 Subject: [PATCH 4/4] rename of a metric --- .../dnetlib/organizations/metrics/ValidOrganizationsMetric.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/metrics/ValidOrganizationsMetric.java b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/metrics/ValidOrganizationsMetric.java index a7b41909..1bb57699 100644 --- a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/metrics/ValidOrganizationsMetric.java +++ b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/metrics/ValidOrganizationsMetric.java @@ -7,7 +7,7 @@ import eu.dnetlib.common.metrics.MetricInfo; import eu.dnetlib.organizations.repository.OrganizationRepository; import eu.dnetlib.organizations.utils.OrganizationStatus; -@Component("valid_organizations_total") +@Component("openorgs_valid_organizations") public class ValidOrganizationsMetric implements MetricInfo { @Autowired