返回介绍

21.4 通过 Actuator 获取了解应用内部状况

发布于 2024-08-17 00:45:49 字数 2521 浏览 0 评论 0 收藏 0

Spring Boot Actuator所完成的主要功能就是为基于Spring Boot的应用添加多个有用的管理端点。这些端点包括以下几个内容。

GET /autoconfig:描述了Spring Boot在使用自动配置的时候,所做出的决策;

GET /beans:列出运行应用所配置的bean;

GET /configprops:列出应用中能够用来配置bean的所有属性及其当前的值;

GET /dump:列出应用的线程,包括每个线程的栈跟踪信息;

GET /env:列出应用上下文中所有可用的环境和系统属性变量;

GET /env/{name}:展现某个特定环境变量和属性变量的值;

GET /health:展现当前应用的健康状况;

GET /info:展现应用特定的信息;

GET /metrics:列出应用相关的指标,包括请求特定端点的运行次数;

GET /metrics/{name}:展现应用特定指标项的指标状况;

POST /shutdown:强制关闭应用;

GET /trace:列出应用最近请求相关的元数据,包括请求和响应头。

为了启用Actuator,我们只需将Actuator Starter依赖添加到项目中即可。如果你使用Groovy编写应用并通过Spring Boot CLI来运行,那么可以通过@Grab注解来添加Actuator Starter,如下所示:

如果使用Gradle构建Java应用的话,那么在build.gradle的dependencies代码块中需要添加如下的依赖:

或者,在项目的Maven pom.xml文件中,我们可以添加如下的<dependency>:

添加完Spring Boot Actuator之后,我们可以重新构建并启动应用,然后打开浏览器访问以上所述的端点来获取更多信息。例如,如果想要查看Spring应用上下文中所有的bean,那么可以访问http://localhost:8080/beans。如果使用curl命令行工具的话,所得到的结果将会如下所示(为了便于阅读,进行了格式化和删减):

从这里,我们可以看到有一个ID为contactController的bean,它依赖于名为contactRepository的bean,而contactRepository又依赖于jdbcTemplatebean。

因为我对输出进行了删减,所以有很多的bean没有展现出来,它们都包含在“/beans”端点所产生的JSON中。对于自动装配和自动配置所形成的神秘结果,这里提供了一种了解内部实现的手段。

另外一个端点也能帮助我们了解Spring Boot自动配置的内部情况,这就是“/autoconfig”。这个端点所返回的JSON描述了Spring Boot在自动配置bean的时候所做出的决策。例如,当针对Contacts应用调用“/autoconfig”端点时,如下展现了删减后(并进行了格式化)的JSON结果:

我们可以看到,这个报告包含了两部分:一部分是没有匹配上的(negative matches),另一部分是匹配上的(positive matches)。在没有匹配的部分中,表明没有使用AOP和自动配置,因为在类路径中没有找到所需的类。在匹配上的部分中,我们可以看到,因为在类路径下找到了SpringTemplateEngine,Thymeleaf自动配置将会发挥作用。同时还可以看到,除非明确声明了默认的模板解析器、视图解析器以及模板bean否则的话,这些bean会进行自动配置。另外,只有在类路径中能够找到Servlet类,才会自动配置默认的视图解析器。

“/beans”和“/autoconfig”端点只是Spring Boot Actuator所提供的观察应用内部状况的两个样例。在本章中,我们没有足够的篇幅详细讨论每个端点,但是我建议你自行尝试这些端点,以便掌握Actuator都提供了哪些功能来帮助我们了解应用的内部状况。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文