Spring Boot「13」使用 Actuator
01-简介
Actuator 是 Spring Boot 中的一个监控工具,它提供了以下功能:
监控应用
收集 metrics
分析流量
监控数据库状态等
因此,Actuator 主要用于暴露正在运行的应用的各种信息,例如应用健康状态、各类指标、日志、转储、环境等其他信息;而且 Actuator 提供了基于 HTTP API 或 JMX Bean 的交互方式,开发者可以非常容易的获取这些信息。
2.x 版本与 1.x 版本的 API 是不兼容的,而且 2.x 是依赖特定技术的,而 1.x 版本是依赖 MVC 或者说 Servlet API 的。因此,2.x 就更容易扩展,使用其他技术扩展(例如 WebFlux)时,仅需要按照要求实现特定的适配器即可。
2.x 版本默认情况下大多数 API EndPoint 是不开启的,仅有 /health 和 /info 两个默认开启。如果要开启其他的 endpoint,可以通过 property 来指定,management.endpoints.web.exposure.include=info,env,beans
默认情况下,endpoint 都在 /actuator 路径下,也可以通过 property 改变这个路径:management.endpoints.web.base-path
上述 property 的配置方式可以在 application.properties 文件中,也可在命令行中添加--management.endpoints.web.exposure.include=info,env,beans
。
直接访问 http://localhost:8080/actuator 可以得到当前包含的所有有效 endpoint,例如:
如何开启所有的 Endpoint?management.endpoints.web.exposure.include=*
可以开启所有的 Actuator endpoint。可以搭配management.endpoints.web.exposure.exclude=threaddump
来排除某些 endpoint。而且,exclude 配置的优先级要比 include 的优先级高。
02-特殊的 endpoint
有些 endpoint 单纯的通过上述配置激活并不生效,例如 /startup 用来记录应用启动过程中的事件; /shutdown 用来停止应用;下面,我们来逐个分析下这两个特殊的 endpoint。
首先,我们来分析 /startup endpoint。除了上节中需要通过 include 将 /startup 激活外,为了监控(或监听)系统启动过程中的事件,应用中需要额外配置一个 ApplicationStartup 接口的实现。Spring Boot 提供了一个基于内存的实现 BufferingApplicationStartup,它能够缓存一定数量的事件,如下所示(最多缓存 2048 个事件):
之后,我们可以运行应用并访问curl http://localhost:8080/actuator/startup -X GET | jq
,会得到如下输出:
如果我们用-X POST
的方式访问,缓存的事件会被清空,再次访问只可以得到一个空列表。
因为 BufferingApplicationStartup 是有容量的,容量满后便不会再存储新的事件了。所以,我们有必要对事件进行过滤,来忽略不关心的事件,例如我们只关心 Bean 实例化事件(关于所有事件可以参考官方文档1):
接下来,我们将分析 /shutdown endpoint。/shutdown endpoint 需要通过management.endpoints.enabled-by-default=true
来开启。开启过后,我们需要通过curl http://localhost:8080/actuator/shutdown -X POST |jq
访问,得到的结果如下:
这里如果我们不使用-X POST
,则会得到如下错误提示:
注:上述这两个 endpoint 其实并不推荐在生产环境使用。特别是第一个,在开发、测试阶段是比较有用。
03-总结
今天,我们首先简单介绍了 Spring Boot 中的 Actuator 及开启它们的方式。接下来,我们详细介绍了两个特殊的 Actuator 及开启它们的配置。Actuator 是 Spring Boot 提供的一种开箱即用的监控工具,帮助开发者更好地了解线上的进程,也可帮助开发者更好地理解 Spring Boot 的运行过程。
版权声明: 本文为 InfoQ 作者【Samson】的原创文章。
原文链接:【http://xie.infoq.cn/article/4a76810a10150e84b13aa8bc9】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论