From 9c79faa83cb03cb8ce26a59f0bc2909944228db4 Mon Sep 17 00:00:00 2001 From: "michele.artini" Date: Fri, 11 Dec 2020 13:50:35 +0100 Subject: [PATCH] broker email, /health and /metrics controllers --- apps/dhp-broker-application/pom.xml | 18 ++++++- .../LiteratureBrokerServiceConfiguration.java | 34 ++++++++++++++ .../broker/events/output/EmailDispatcher.java | 46 +++++++++++++++++- .../openaire/OpenaireBrokerController.java | 3 +- .../src/main/resources/application.properties | 13 ++++- .../resources/templates/dhp_openaire_mail.st | 11 +++-- .../events/output/EmailDispatcherTest.java | 35 ++++++++++++++ ...ostgres.sh => ssh_tunnel_postgres_beta.sh} | 0 .../ssh_tunnel_postgres_prod.sh | 3 ++ apps/dhp-broker-public-application/pom.xml | 18 ++++++- .../dnetlib/broker/BrokerConfiguration.java | 34 ++++++++++++++ .../src/main/resources/application.properties | 5 ++ apps/dnet-orgs-database-application/pom.xml | 18 ++++++- .../organizations/MainConfiguration.java | 47 +++++++++++++++++++ .../organizations/MockSecurityConfig.java | 2 +- .../OAuth2WebSecurityConfig.java | 2 +- .../src/main/resources/application.properties | 7 +++ apps/pom.xml | 15 ++++++ pom.xml | 6 +++ 19 files changed, 304 insertions(+), 13 deletions(-) create mode 100644 apps/dhp-broker-application/src/test/java/eu/dnetlib/broker/events/output/EmailDispatcherTest.java rename apps/dhp-broker-application/{ssh_tunnel_postgres.sh => ssh_tunnel_postgres_beta.sh} (100%) create mode 100755 apps/dhp-broker-application/ssh_tunnel_postgres_prod.sh create mode 100644 apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/MainConfiguration.java diff --git a/apps/dhp-broker-application/pom.xml b/apps/dhp-broker-application/pom.xml index 5608dfff..8529e585 100644 --- a/apps/dhp-broker-application/pom.xml +++ b/apps/dhp-broker-application/pom.xml @@ -1,5 +1,7 @@ - + eu.dnetlib.dhp @@ -36,6 +38,20 @@ + + + . + + pom.xml + + + + src/main/java + + + src/main/resources + + org.springframework.boot 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 d06b170e..b85343d8 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 @@ -1,7 +1,15 @@ package eu.dnetlib.broker; +import java.io.IOException; +import java.io.InputStreamReader; + +import javax.annotation.PostConstruct; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.maven.model.Model; +import org.apache.maven.model.io.xpp3.MavenXpp3Reader; +import org.codehaus.plexus.util.xml.pull.XmlPullParserException; import org.elasticsearch.client.RestHighLevelClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -9,6 +17,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean import org.springframework.boot.web.servlet.ServletRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.core.io.ClassPathResource; import org.springframework.data.elasticsearch.client.ClientConfiguration; import org.springframework.data.elasticsearch.client.RestClients; import org.springframework.data.elasticsearch.config.AbstractElasticsearchConfiguration; @@ -16,9 +25,13 @@ import org.springframework.data.elasticsearch.repository.config.EnableElasticsea import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.transaction.annotation.EnableTransactionManagement; +import com.google.common.collect.Lists; + import eu.dnetlib.broker.common.elasticsearch.Event; import eu.dnetlib.broker.common.elasticsearch.Notification; import eu.dnetlib.broker.common.properties.ElasticSearchProperties; +import io.micrometer.core.instrument.ImmutableTag; +import io.micrometer.core.instrument.Metrics; import io.prometheus.client.exporter.MetricsServlet; import io.prometheus.client.hotspot.DefaultExports; import springfox.documentation.builders.RequestHandlerSelectors; @@ -42,6 +55,9 @@ public class LiteratureBrokerServiceConfiguration extends AbstractElasticsearchC @Autowired private ElasticSearchProperties elasticSearchProperties; + @Value("pom.xml") + private ClassPathResource pom; + public static final String TAG_EVENTS = "Events"; public static final String TAG_SUBSCRIPTIONS = "Subscriptions"; public static final String TAG_NOTIFICATIONS = "Notifications"; @@ -49,6 +65,24 @@ public class LiteratureBrokerServiceConfiguration extends AbstractElasticsearchC public static final String TAG_OPENAIRE = "OpenAIRE"; public static final String TAG_MATCHING = "Subscription-Event Matching"; + @PostConstruct + public void init() { + final MavenXpp3Reader reader = new MavenXpp3Reader(); + try { + final Model model = reader.read(new InputStreamReader(pom.getInputStream())); + + log.info(String.format("registering metric for %s", model.getArtifactId())); + + final ImmutableTag tag1 = new ImmutableTag("component", model.getGroupId() + ":" + model.getArtifactId()); + // final ImmutableTag tag2 = new ImmutableTag("version", model.getVersion()); + // final ImmutableTag tag3 = new ImmutableTag("scmtag", model.getScm().getTag()); + + Metrics.gauge("micrometer_info", Lists.newArrayList(tag1), 1); + } catch (IOException | XmlPullParserException e) { + log.error("Error registering metric", e); + } + } + @Override @Bean public RestHighLevelClient elasticsearchClient() { diff --git a/apps/dhp-broker-application/src/main/java/eu/dnetlib/broker/events/output/EmailDispatcher.java b/apps/dhp-broker-application/src/main/java/eu/dnetlib/broker/events/output/EmailDispatcher.java index 70892317..84195c5c 100644 --- a/apps/dhp-broker-application/src/main/java/eu/dnetlib/broker/events/output/EmailDispatcher.java +++ b/apps/dhp-broker-application/src/main/java/eu/dnetlib/broker/events/output/EmailDispatcher.java @@ -44,6 +44,15 @@ public class EmailDispatcher extends AbstractNotificationDispatcher { @Value("${lbs.mail.message.template}") private Resource emailTemplate; + @Value("${lbs.mail.message.template.dashboard.baseUrl}") + private String dashboardBaseUrl; + + @Value("${lbs.mail.message.template.dashboard.helpdesk}") + private String helpdesk; + + @Value("${lbs.mail.message.template.publicApi}") + private String publicApi; + public static final int MAX_NUMBER_OF_EVENTS = 20; private static final Log log = LogFactory.getLog(EmailDispatcher.class); @@ -75,12 +84,15 @@ public class EmailDispatcher extends AbstractNotificationDispatcher { return prepareMimeMessage(subscription, content); } - private String generateMailContent(final Subscription subscription, final Map params, final Event... events) throws IOException { + protected String generateMailContent(final Subscription subscription, final Map params, final Event... events) throws IOException { final StringTemplate st = new StringTemplate(IOUtils.toString(emailTemplate.getInputStream(), StandardCharsets.UTF_8)); st.setAttribute("sub", subscription); st.setAttribute("total", events.length); st.setAttribute("max", MAX_NUMBER_OF_EVENTS); + st.setAttribute("dashboardBaseUrl", dashboardBaseUrl.trim()); + st.setAttribute("publicApi", publicApi.trim()); + st.setAttribute("helpdesk", helpdesk.trim()); if (events.length > MAX_NUMBER_OF_EVENTS) { st.setAttribute("events", Arrays.copyOfRange(events, 0, MAX_NUMBER_OF_EVENTS)); @@ -154,4 +166,36 @@ public class EmailDispatcher extends AbstractNotificationDispatcher { return NotificationMode.EMAIL; } + protected Resource getEmailTemplate() { + return emailTemplate; + } + + protected void setEmailTemplate(final Resource emailTemplate) { + this.emailTemplate = emailTemplate; + } + + protected String getDashboardBaseUrl() { + return dashboardBaseUrl; + } + + protected void setDashboardBaseUrl(final String dashboardBaseUrl) { + this.dashboardBaseUrl = dashboardBaseUrl; + } + + protected String getHelpdesk() { + return helpdesk; + } + + protected void setHelpdesk(final String helpdesk) { + this.helpdesk = helpdesk; + } + + protected String getPublicApi() { + return publicApi; + } + + protected void setPublicApi(final String publicApi) { + this.publicApi = publicApi; + } + } diff --git a/apps/dhp-broker-application/src/main/java/eu/dnetlib/broker/openaire/OpenaireBrokerController.java b/apps/dhp-broker-application/src/main/java/eu/dnetlib/broker/openaire/OpenaireBrokerController.java index c9060626..58064232 100644 --- a/apps/dhp-broker-application/src/main/java/eu/dnetlib/broker/openaire/OpenaireBrokerController.java +++ b/apps/dhp-broker-application/src/main/java/eu/dnetlib/broker/openaire/OpenaireBrokerController.java @@ -306,6 +306,7 @@ public class OpenaireBrokerController extends AbstractLbsController { if (count > 0) { final Map params = new HashMap<>(); params.put("oa_notifications_total", count); + params.put("oa_datasource", extractDatasource(s)); dispatcher.sendNotification(s, params); } @@ -327,7 +328,7 @@ public class OpenaireBrokerController extends AbstractLbsController { .filter(l -> !l.isEmpty()) .map(l -> l.get(0).getValue()) .findFirst() - .get(); + .orElse(""); } private long overrideGetTotalPage(final SearchHits page, final int size) { diff --git a/apps/dhp-broker-application/src/main/resources/application.properties b/apps/dhp-broker-application/src/main/resources/application.properties index 94d78524..c6a90422 100644 --- a/apps/dhp-broker-application/src/main/resources/application.properties +++ b/apps/dhp-broker-application/src/main/resources/application.properties @@ -2,6 +2,11 @@ spring.profiles.active = dev,openaire #logging.level.root=DEBUG +management.endpoints.web.exposure.include = prometheus,health +management.endpoints.web.base-path = / +management.endpoints.web.path-mapping.prometheus = metrics +management.endpoints.web.path-mapping.health = health + spring.datasource.url=jdbc:postgresql://localhost:5432/oa_broker spring.datasource.username=oa_broker spring.datasource.password= @@ -33,13 +38,17 @@ lbs.elastic.eventsIndexName = oa_events_beta lbs.elastic.notificationsIndexName = oa_notifications_beta lbs.mail.from = notifications-noreply@openaire.eu -lbs.mail.fromName = Literature Broker Service -lbs.mail.cc = michele.artini@isti.cnr.it +lbs.mail.fromName = OpenAIRE Broker Service +lbs.mail.cc = lbs.mail.smtpHost = smtp.isti.cnr.it lbs.mail.smtpPort = 587 lbs.mail.smtpUser = smtp-dnet lbs.mail.smtpPassword = hhr*7932 lbs.mail.message.template = classpath:/templates/dhp_openaire_mail.st +lbs.mail.message.template.dashboard.baseUrl = https://provide.openaire.eu/content/notifications/ +lbs.mail.message.template.dashboard.helpdesk = https://www.openaire.eu/support/helpdesk +lbs.mail.message.template.publicApi = https://api.openaire.eu/broker + lbs.queues.maxReturnedValues = 1000 diff --git a/apps/dhp-broker-application/src/main/resources/templates/dhp_openaire_mail.st b/apps/dhp-broker-application/src/main/resources/templates/dhp_openaire_mail.st index d500b195..ee0dba00 100644 --- a/apps/dhp-broker-application/src/main/resources/templates/dhp_openaire_mail.st +++ b/apps/dhp-broker-application/src/main/resources/templates/dhp_openaire_mail.st @@ -1,7 +1,7 @@ You have received this mail because you are owner of the following subscription:
    -
  • ID: $sub.subscriptionId$
  • +
  • Datasource Name: $oa_datasource$
  • Topic: $sub.topic$
  • Number of events: $oa_notifications_total$
@@ -9,9 +9,12 @@ You have received this mail because you are owner of the following subscription:

-You can access the notified events at this address: ....
-or using the Public Broker Service API. +You can access the notified events at this address: +$dashboardBaseUrl$$sub.subscriptionId$
+or using the Public Broker Service API (the ID of the current subscription is >$sub.subscriptionId$).


-This email message was auto-generated. Please do not respond. +This email message was auto-generated. Please do not respond. If you need support, please contact the +OpenAIRE helpdesk. + diff --git a/apps/dhp-broker-application/src/test/java/eu/dnetlib/broker/events/output/EmailDispatcherTest.java b/apps/dhp-broker-application/src/test/java/eu/dnetlib/broker/events/output/EmailDispatcherTest.java new file mode 100644 index 00000000..dc27864f --- /dev/null +++ b/apps/dhp-broker-application/src/test/java/eu/dnetlib/broker/events/output/EmailDispatcherTest.java @@ -0,0 +1,35 @@ +package eu.dnetlib.broker.events.output; + +import java.util.HashMap; +import java.util.Map; + +import org.junit.jupiter.api.Test; +import org.springframework.core.io.ClassPathResource; + +import eu.dnetlib.broker.common.elasticsearch.Event; +import eu.dnetlib.broker.common.subscriptions.Subscription; + +public class EmailDispatcherTest { + + @Test + void testGenerateMailContent() throws Exception { + final EmailDispatcher dispatcher = new EmailDispatcher(); + dispatcher.setEmailTemplate(new ClassPathResource("/templates/dhp_openaire_mail.st")); + dispatcher.setDashboardBaseUrl("https://provide.openaire.eu/content/notifications/"); + dispatcher.setHelpdesk("https://www.openaire.eu/support/helpdesk"); + dispatcher.setPublicApi("https://api.openaire.eu/broker"); + + final Subscription s = new Subscription(); + s.setSubscriptionId("sub-00001"); + s.setTopic("ENRICH/MISSING/ABSTRACT"); + + final Event events = new Event(); + + final Map params = new HashMap<>(); + params.put("oa_notifications_total", 1023); + params.put("oa_datasource", "ISTI OpenPortal"); + + System.out.println(dispatcher.generateMailContent(s, params, events)); + } + +} diff --git a/apps/dhp-broker-application/ssh_tunnel_postgres.sh b/apps/dhp-broker-application/ssh_tunnel_postgres_beta.sh similarity index 100% rename from apps/dhp-broker-application/ssh_tunnel_postgres.sh rename to apps/dhp-broker-application/ssh_tunnel_postgres_beta.sh diff --git a/apps/dhp-broker-application/ssh_tunnel_postgres_prod.sh b/apps/dhp-broker-application/ssh_tunnel_postgres_prod.sh new file mode 100755 index 00000000..c9eedcda --- /dev/null +++ b/apps/dhp-broker-application/ssh_tunnel_postgres_prod.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +ssh -vNL 5432:10.19.65.39:5432 michele.artini@iis-cdh5-test-gw.ocean.icm.edu.pl diff --git a/apps/dhp-broker-public-application/pom.xml b/apps/dhp-broker-public-application/pom.xml index d190260c..3ff702f1 100644 --- a/apps/dhp-broker-public-application/pom.xml +++ b/apps/dhp-broker-public-application/pom.xml @@ -1,5 +1,7 @@ - + eu.dnetlib.dhp @@ -58,6 +60,20 @@ + + + . + + pom.xml + + + + src/main/java + + + src/main/resources + + org.springframework.boot 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 6f3a53d1..d263c8cc 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 @@ -1,7 +1,15 @@ package eu.dnetlib.broker; +import java.io.IOException; +import java.io.InputStreamReader; + +import javax.annotation.PostConstruct; + import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.apache.maven.model.Model; +import org.apache.maven.model.io.xpp3.MavenXpp3Reader; +import org.codehaus.plexus.util.xml.pull.XmlPullParserException; import org.elasticsearch.client.RestHighLevelClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; @@ -9,6 +17,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean import org.springframework.boot.web.servlet.ServletRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; +import org.springframework.core.io.ClassPathResource; import org.springframework.data.elasticsearch.client.ClientConfiguration; import org.springframework.data.elasticsearch.client.RestClients; import org.springframework.data.elasticsearch.config.AbstractElasticsearchConfiguration; @@ -16,9 +25,13 @@ import org.springframework.data.elasticsearch.repository.config.EnableElasticsea import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.transaction.annotation.EnableTransactionManagement; +import com.google.common.collect.Lists; + import eu.dnetlib.broker.common.elasticsearch.Event; import eu.dnetlib.broker.common.elasticsearch.Notification; import eu.dnetlib.broker.common.properties.ElasticSearchProperties; +import io.micrometer.core.instrument.ImmutableTag; +import io.micrometer.core.instrument.Metrics; import io.prometheus.client.exporter.MetricsServlet; import io.prometheus.client.hotspot.DefaultExports; import springfox.documentation.builders.RequestHandlerSelectors; @@ -42,8 +55,29 @@ public class BrokerConfiguration extends AbstractElasticsearchConfiguration { @Autowired private ElasticSearchProperties elasticSearchProperties; + @Value("pom.xml") + private ClassPathResource pom; + public static final String OA_PUBLIC_APIS = "Openaire Broker Public API"; + @PostConstruct + public void init() { + final MavenXpp3Reader reader = new MavenXpp3Reader(); + try { + final Model model = reader.read(new InputStreamReader(pom.getInputStream())); + + log.info(String.format("registering metric for %s", model.getArtifactId())); + + final ImmutableTag tag1 = new ImmutableTag("component", model.getGroupId() + ":" + model.getArtifactId()); + // final ImmutableTag tag2 = new ImmutableTag("version", model.getVersion()); + // final ImmutableTag tag3 = new ImmutableTag("scmtag", model.getScm().getTag()); + + Metrics.gauge("micrometer_info", Lists.newArrayList(tag1), 1); + } catch (IOException | XmlPullParserException e) { + log.error("Error registering metric", e); + } + } + @Override @Bean public RestHighLevelClient elasticsearchClient() { diff --git a/apps/dhp-broker-public-application/src/main/resources/application.properties b/apps/dhp-broker-public-application/src/main/resources/application.properties index fffddb1a..1ef5901a 100644 --- a/apps/dhp-broker-public-application/src/main/resources/application.properties +++ b/apps/dhp-broker-public-application/src/main/resources/application.properties @@ -3,6 +3,11 @@ spring.profiles.active = dev,openaire #logging.level.root=DEBUG +management.endpoints.web.exposure.include = prometheus,health +management.endpoints.web.base-path = / +management.endpoints.web.path-mapping.prometheus = metrics +management.endpoints.web.path-mapping.health = health + spring.datasource.url=jdbc:postgresql://localhost:5432/oa_broker spring.datasource.username=oa_broker spring.datasource.password= diff --git a/apps/dnet-orgs-database-application/pom.xml b/apps/dnet-orgs-database-application/pom.xml index 33890ab2..92693837 100644 --- a/apps/dnet-orgs-database-application/pom.xml +++ b/apps/dnet-orgs-database-application/pom.xml @@ -1,5 +1,7 @@ - + eu.dnetlib.dhp @@ -84,6 +86,20 @@ + + + . + + pom.xml + + + + src/main/java + + + src/main/resources + + org.springframework.boot diff --git a/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/MainConfiguration.java b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/MainConfiguration.java new file mode 100644 index 00000000..d8cd209f --- /dev/null +++ b/apps/dnet-orgs-database-application/src/main/java/eu/dnetlib/organizations/MainConfiguration.java @@ -0,0 +1,47 @@ +package eu.dnetlib.organizations; + +import java.io.IOException; +import java.io.InputStreamReader; + +import javax.annotation.PostConstruct; + +import org.apache.maven.model.Model; +import org.apache.maven.model.io.xpp3.MavenXpp3Reader; +import org.codehaus.plexus.util.xml.pull.XmlPullParserException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.io.ClassPathResource; + +import com.google.common.collect.Lists; + +import io.micrometer.core.instrument.ImmutableTag; +import io.micrometer.core.instrument.Metrics; + +@Configuration +public class MainConfiguration { + + private static final Logger log = LoggerFactory.getLogger(MainConfiguration.class); + + @Value("pom.xml") + private ClassPathResource pom; + + @PostConstruct + public void init() { + final MavenXpp3Reader reader = new MavenXpp3Reader(); + try { + final Model model = reader.read(new InputStreamReader(pom.getInputStream())); + + log.info(String.format("registering metric for %s", model.getArtifactId())); + + final ImmutableTag tag1 = new ImmutableTag("component", model.getGroupId() + ":" + model.getArtifactId()); + // final ImmutableTag tag2 = new ImmutableTag("version", model.getVersion()); + // final ImmutableTag tag3 = new ImmutableTag("scmtag", model.getScm().getTag()); + + Metrics.gauge("micrometer_info", Lists.newArrayList(tag1), 1); + } catch (IOException | XmlPullParserException e) { + log.error("Error registering metric", e); + } + } +} 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 f90762ba..b8448608 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 @@ -48,7 +48,7 @@ public class MockSecurityConfig extends WebSecurityConfigurerAdapter { .hasAnyRole(OpenOrgsConstants.VALID_ROLES) .antMatchers("/registration_api/**") .hasRole(OpenOrgsConstants.NOT_AUTORIZED_ROLE) - .antMatchers("/resources/**", "/webjars/**") + .antMatchers("/resources/**", "/webjars/**", "/metrics", "/health") .permitAll() .antMatchers("/oa_api/**") .hasIpAddress(openaireApiValidSubnet) 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 373da0c3..d82f8105 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 @@ -60,7 +60,7 @@ public class OAuth2WebSecurityConfig extends WebSecurityConfigurerAdapter { .hasAnyRole(OpenOrgsConstants.VALID_ROLES) .antMatchers("/registration_api/**") .hasRole(OpenOrgsConstants.NOT_AUTORIZED_ROLE) - .antMatchers("/", "/resources/**", "/webjars/**") + .antMatchers("/", "/resources/**", "/webjars/**", "/metrics", "/health") .permitAll() .antMatchers("/oa_api/**") .hasIpAddress(openaireApiValidSubnet) diff --git a/apps/dnet-orgs-database-application/src/main/resources/application.properties b/apps/dnet-orgs-database-application/src/main/resources/application.properties index 74e63be6..2650c195 100644 --- a/apps/dnet-orgs-database-application/src/main/resources/application.properties +++ b/apps/dnet-orgs-database-application/src/main/resources/application.properties @@ -7,6 +7,12 @@ spring.main.banner-mode = off logging.level.root = INFO #logging.level.org.springframework = DEBUG + +management.endpoints.web.exposure.include = prometheus,health +management.endpoints.web.base-path = / +management.endpoints.web.path-mapping.prometheus = metrics +management.endpoints.web.path-mapping.health = health + spring.datasource.url=jdbc:postgresql://localhost:5432/oa_organizations spring.datasource.username=oa_organizations spring.datasource.password= @@ -38,3 +44,4 @@ spring.security.oauth2.client.provider.oidc.token-uri = http://localhost spring.security.oauth2.client.provider.oidc.user-info-uri = http://localhost:8080/openid-connect-server-webapp/userinfo openaire.override.logout.url = + diff --git a/apps/pom.xml b/apps/pom.xml index c73302ea..cba71198 100644 --- a/apps/pom.xml +++ b/apps/pom.xml @@ -35,6 +35,21 @@ test + + + + org.springframework.boot + spring-boot-starter-actuator + + + io.micrometer + micrometer-registry-prometheus + + + + org.apache.maven + maven-model + diff --git a/pom.xml b/pom.xml index 3545f884..951295b6 100644 --- a/pom.xml +++ b/pom.xml @@ -157,6 +157,12 @@ 1.1.6 + + org.apache.maven + maven-model + 3.2.3 + + jakarta.xml.bind