Project

General

Profile

1
package eu.dnetlib.enabling.app;
2

    
3
import java.util.Collection;
4

    
5
import org.springframework.beans.factory.annotation.Value;
6
import org.springframework.boot.actuate.endpoint.PublicMetrics;
7
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
8
import org.springframework.boot.web.servlet.ServletRegistrationBean;
9
import org.springframework.context.annotation.Bean;
10
import org.springframework.context.annotation.Configuration;
11

    
12
import eu.dnetlib.services.ApiDocUtils;
13
import io.prometheus.client.exporter.MetricsServlet;
14
import io.prometheus.client.hotspot.DefaultExports;
15
import io.prometheus.client.spring.boot.SpringBootMetricsCollector;
16
import springfox.documentation.spring.web.plugins.Docket;
17

    
18
@Configuration
19
public class MainConfiguration {
20

    
21
	@Bean
22
	public Docket api() {
23
		return ApiDocUtils.newSwaggerDocket();
24
	}
25

    
26
	@Bean
27
	@ConditionalOnMissingBean(SpringBootMetricsCollector.class)
28
	SpringBootMetricsCollector springBootMetricsCollector(final Collection<PublicMetrics> publicMetrics) {
29

    
30
		final SpringBootMetricsCollector springBootMetricsCollector = new SpringBootMetricsCollector(publicMetrics);
31
		springBootMetricsCollector.register();
32

    
33
		return springBootMetricsCollector;
34
	}
35

    
36
	@Bean
37
	@ConditionalOnMissingBean(name = "prometheusMetricsServletRegistrationBean")
38
	ServletRegistrationBean prometheusMetricsServletRegistrationBean(@Value("${prometheus.metrics.path:/prometheus}") final String metricsPath) {
39
		DefaultExports.initialize();
40
		return new ServletRegistrationBean(new MetricsServlet(), metricsPath);
41
	}
42

    
43
}
(2-2/2)