我一直在开发一个Spring/Spring MVC应用程序,我希望添加性能指标。我遇到了Sping Boot Actuator,它看起来是一个很棒的解决方案。但是我的应用程序不是Spring Boot应用程序。我的应用程序运行在传统的容器Tomcat 8中。
我添加了以下依赖项
// Spring Actuator
compile "org.springframework.boot:spring-boot-starter-actuator:1.2.3.RELEASE"
我创建了以下配置类。
@EnableConfigurationProperties
@Configuration
@EnableAutoConfiguration
@Profile(value = {"dev", "test"})
@Import(EndpointAutoConfiguration.class)
public class SpringActuatorConfig {
}
我甚至按照StackOverflow上的另一篇文章的建议在每个配置类上添加了@EnableConfigurationProperties
。然而,这并没有起到任何作用。端点仍然没有被创建,并返回404。
7条答案
按热度按时间lrl1mhuk1#
首先让我们澄清一下,如果不使用Spring Boot,就不能使用 Spring Boot 执行器。
我错了,没有Sping Boot 我就不能做这件事。
我创建了一个示例项目来演示如何使用最少量的 Boot 自动配置来转换基本的SpringMVC应用程序。
原始来源:http://www.mkyong.com/spring-mvc/gradle-spring-mvc-web-project-example
转换的源:https://github.com/Pytry/minimal-boot-actuator
我本可以完全删除dispatcher-servlet.xml和web.xml文件,但我保留了它们,以说明如何执行尽可能少的更改,并简化更复杂项目的转换。
下面是我转换的步骤列表。
转换过程
或者,在application.properties中添加前缀和后缀,然后在应用程序中使用@Value注入它们,或者完全删除它们,只使用提供的spring Boot 视图解析器。
这很重要!因为Sping Boot 将提供一个,如果你不提供,你将得到一个“错误侦听器启动”异常。
d5vmydt92#
您可以使用不带 Spring Boot 的执行器。
然后在config类中
然后您可以看到应用程序中的指标
http://localhost:8085/metrics
ifmq2ha23#
尽管在没有Spring Boot的情况下使用Sping Boot 功能不是一个好主意,但这是可能的!
例如,此Java配置使Sping Boot Actuator指标在不使用Spring Boot的情况下可用:
Maven依赖项:
8cdiaqws4#
虽然答案已经被接受了,但我还是想更新一下我的经验。我不想使用
@SpringBootApplication
将我的应用程序转换为Sping Boot 。请参考another question,我在那里提到了所需的最低代码。lndjwyie5#
由于我们已经有了 Boot ,因此将Actuator包含到现有SpringMVC项目中的方法如下所示:
我确实包括了
为了与我一直使用的基准Spring版本(5.1.19.RELEASE)兼容
moiiocjp6#
如果您的目标是为Prometheus(又名OpenMetrics)创建一个具有度量的端点,则可以使用与Spring框架兼容的Prometheus JVM client。
新增相依性:
要收集请求的度量,请添加为
web-app/WEB-INF/web.xml
中的第一个筛选器:要将度量公开为HTTP端点,请添加Servlet:
之后,您可以看到
/metrics
端点上的指标。cqoc49vn7#
你犯了一个错误,没有在你的代码中引入@springboot注解。当你添加@springboot时,ot会被编译器自动视为引导程序,并为其添加所需的依赖文件和你的执行器依赖文件