《SpringBoot 3:入门与应用实战》第 15 章 生产级特性 管理 Spring Boot 应用 阅读笔记
一 参考资料

二 笔记总结
15.4 管理 Spring Boot 应用
当前比较流行的可视化监控组件是Spring Boot Admin,帮助我们将这些指标都直观地展示到浏览器中,虽然不由 Spring Boot 官方提供,但其较高的实用性和易用性赢得了一众开发者的青睐,所以接下来介绍的就是 Spring Boot Admin 的使用。
Spring Boot Admin 是一个管理和监控 Spring Boot 应用的组件,可以对 Spring Boot 应用进行健康状态的实时监控和展示、监控端点和指标数据的展示、显示和下载线程堆栈信息、控制应用内的日志级别等。Spring Boot Admin 由服务端和客户端两部分构成,其中Spring Boot Admin Server 是中心管理端,负责监控信息的收集、存储和预警,Spring Boot Admin Client 则需要整合到各个 Spring Boot 应用中,借助 HTTP 的方式注册到 Spring Boot Admin Server 上(如果使用了微服务架构,则可以借助 Eureka、Nacos、Consul 等注册中心进行注册)。
Spring Boot Admin 的代码都托管在 GitHub 上,并且在代码仓库的 README 中还给了一个 quick guide,单击它可以很轻松地找到 Spring Boot Admin 提供的最新使用文档。



15.4.1 搭建Admin Server
我们按照 Spring Boot Admin 的文档快速搭建使用 Spring Boot Admin 所需的环境。首先是服务端的创建,需要创建一个全新的 springboot 工程,引入 spring-boot- admin-starter-server 依赖即可。除此之外还要引入 WebMvc 和 Actuator 的场景启动器,以满足监控自身所需。


注意,启用 Spring Boot Admin Server 时需要在主启动类上标注 @EnableAdminServer 注解,代表当前应用充当 Spring Boot Admin Server 的角色。

对于当前的 Admin Server 工程我们选择使用8899端口作为服务端监听端口,在 application.yml 中配置 server.port=8899 即可。

工程搭建完毕后就可以运行 SpringbootAdminOneApplication 的 main 方法,随后在浏览器上访问 http://localhost:8899。

15.4.2 应用注册到 Admin Server
接下来我们将 springboot 工程入驻到 Admin Server 中,只需要在 pom.xml 中导入 Admin Client 的依赖,并且对应编写连接 Admin Server 的配置。


xml
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>3.2.1</version>
</dependency>

yml
boot:
admin:
client:
url: http://localhost:8899
配置完毕后即可重启工程,当工程重启完成后,回到浏览器的 Spring Boot Admin Server 监控面板中,可以发现首页应用中自动监听到了springboot 工程注册,单击这个应用还可以看到当前应用的地址和运行状态、版本号等信息。


15.4.3 查看应用实例信息
我们可以从 Admin Server 面板中获取非常多的信息。下面一一来看。
- 应用基础信息
展示的是一个 Spring Boot 中最基础的信息,包含 info 端点的信息、health 端点的信息,以及右侧线程的信息、CPU、内存、磁盘等。简单地说,这个"细节"面板中可以让我们对一个 Spring Boot 的应用实例有一个基本了解。


- 性能
"性能"板块其实对应的就是监控指标,我们可以从中选择一些自己感兴趣的监控指标添加到常驻面板上,这样就能得到实时的数据监控信息。比方说,分别监控接口调用的次数以及 CPU 核心数、占用率。

- 环境
"环境"其实对标的就是 Spring Framework 中的 Environment,也就是监控端点列表中 env 端点返回的数据,只不过 Admin Server 可以使用可视化界面展示出来。

- 组件
下一个介绍的是"类",这个译名失之偏颇,因为这个板块对应的监控端点是 beans,所以翻译为"组件"更为恰当。与 beans 端点返回的数据相同,组件面板中可以查看某个 Bean 中依赖的其他 Bean 以及这个 Bean 的来源。

- 配置属性
配置属性"就是监控端点中的configprops,它对应的是/actuator/configprops端点返回的数据。

- 日志配置
下面的一个重点是日志配置的内容,loggers 这个端点具备多个功能,发送 GET 请求可以获取指定的日志级别,而发送 PUT 请求可以修改日志级别,在 Admin Server 的这个面板中我们就可以利用图形化界面代替 API 工具发送请求。
当打开日志配置页面时,默认没有配置的情况下所有日志输出级别都是 INFO,通过单击每个日志项右侧的按钮可以动态修改某个包下(甚至全局)的日志打印级别。
这个功能在项目开发中非常有用,正常情况下我们在开发环境中可能使用 INFO 级别,在生产环境中可能使用 WARN 或者 ERROR 级别,而当出现问题需要调试时希望可以切换到 DEBUG 级别,但是传统开发中每次切换都要重新启动工程,费时费力,因此 Admin Server 直接提供了可视化切换面板,可以直接在 Admin Server 中切换日志输出级别,配合日志收集分析,排查问题。

其余的各个板块,感兴趣的读者可以逐个单击查看,比如前面讲解的 mappings 映射信息,以及 JVM 堆、栈的查看,这些功能大大提升了我们监控的体验感和效率。