为应用程序添加系统监控-Spring Boot Actuator组件
在本节中,我们将介绍Spring Boot自带的系统监控功能。系统监控在传统Spring中是缺失的,而Spring Boot考虑到了这方面需求并提供了Actuator组件。Actuator组件对外暴露的是一系列HTTP端点,请注意访问这些端点时返回的数据的风格跟平时常见的RESTful风格有所不同,这是因为该组件在构建HTTP端点时使用的就是我们在第4章介绍的HATEOAS。
Actuator组件
初始化Spring Boot监控需要引入Spring Boot Actuator组件,而SpringBoot Actuator组件又依赖于Spring HATEOAS组件,所以需要在pom中添加两个Maven依赖,如代码清单12-1所示。
当启动Spring Boot应用程序时,我们在启动日志里会发现自动添加了autoconfig、dump、beans、actuator、health等HTTP的端点。但是请注意,并不是所有端点都是对外暴露的。如果想要获取当前系统暴露的Actuator端点,可以访问http://localhost:8080/actuator并得到如代码清单12-2所示的结果。
这种结果就是HATEOAS风格的HTTP响应,可以看到,默认情况下SpringBoot Actuator只暴露了info和health这两个最基本的监控端点。如果我们想要看到默认情况下看不到的所有端点,则需要在配置文件中添加如代码清单12-3所示的配置信息。
重启Spring Boot应用程序,这时就能获取Spring Boot Actuator所暴露的所有端点,如代码清单12-4所示。
我们可以访问上述结果中的各个端点以获取自己感兴趣的监控信息,例如访问http://localhost:8080/actuator/health端点可以得到当前服务的基本状态,如代码清单12-5所示。
上述配置项指定了需要显示health这个端点的详细信息。同样的配置方法也适用于其他各个端点。本书不对Spring Boot Actuator提供的所有端点都进行详细讨论,根据各个端点所起到的作用,将它们分为三大类。第一类是应用配置类,用来获取应用程序中加载的应用配置、环境变量、自动化配置报告等与Spring Boot应用密切相关的配置类信息,典型的包括info、beans、env等端点。第二类是度量指标类,用来获取应用程序运行过程中的内存信息、线程池信息、HTTP请求统计等度量指标,常见的包括前面提到的health,以及metrics和threaddump等端点。第三类是操作控制类,用于对Spring Boot应用程序进行操作,包括用来关闭应用的shutdown端点。
Spring Boot Actuator内置的这些端点已经能够很大程度上满足日常开发的需求。但如果这些默认端点信息还不够丰富,我们也可以对其进行修改和扩展。常见实现方案有两种,一种是扩展现有的监控端点,另一种是自定义新的监控端点。在接下来的内容中,我们将通过案例来实现这一目标。我们先来关注如何在现有的监控端点上添加定制化功能。
本文就是愿天堂没有BUG给大家分享的内容,大家有收获的话可以分享下,想学习更多的话可以到微信公众号里找我,我等你哦。