I’ve been working on a Spring/Spring MVC application and I’m looking to add performance metrics. I’ve come across Spring Boot Actuator and it looks like a great solution. However my application is not a Spring Boot application. My application is running in a traditional container Tomcat 8.
I added the following dependencies
// Spring Actuator compile "org.springframework.boot:spring-boot-starter-actuator:1.2.3.RELEASE"
I created the following config class.
@EnableConfigurationProperties @Configuration @EnableAutoConfiguration @Profile(value = {"dev", "test"}) @Import(EndpointAutoConfiguration.class) public class SpringActuatorConfig { }
I even went as far as adding @EnableConfigurationProperties
on every configuration class as suggested on another post on StackOverflow. However that didn’t do anything. The endpoints are still not being created and return 404s.
Advertisement
Answer
You can use actuator without spring boot. Add this to pom.xml
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-actuator</artifactId> <version>1.3.5.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.3.5.RELEASE</version> </dependency>
And then in your config class
@Configuration @EnableWebMvc @Import({ EndpointAutoConfiguration.class , PublicMetricsAutoConfiguration.class , HealthIndicatorAutoConfiguration.class }) public class MyActuatorConfig { @Bean @Autowired public EndpointHandlerMapping endpointHandlerMapping(Collection<? extends MvcEndpoint> endpoints) { return new EndpointHandlerMapping(endpoints); } @Bean @Autowired public EndpointMvcAdapter metricsEndPoint(MetricsEndpoint delegate) { return new EndpointMvcAdapter(delegate); } }
And then you can see the metrics in your application