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

《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 面板中获取非常多的信息。下面一一来看。

  1. 应用基础信息
    展示的是一个 Spring Boot 中最基础的信息,包含 info 端点的信息、health 端点的信息,以及右侧线程的信息、CPU、内存、磁盘等。简单地说,这个"细节"面板中可以让我们对一个 Spring Boot 的应用实例有一个基本了解。

  2. 性能
    "性能"板块其实对应的就是监控指标,我们可以从中选择一些自己感兴趣的监控指标添加到常驻面板上,这样就能得到实时的数据监控信息。比方说,分别监控接口调用的次数以及 CPU 核心数、占用率。
  3. 环境
    "环境"其实对标的就是 Spring Framework 中的 Environment,也就是监控端点列表中 env 端点返回的数据,只不过 Admin Server 可以使用可视化界面展示出来。
  4. 组件
    下一个介绍的是"类",这个译名失之偏颇,因为这个板块对应的监控端点是 beans,所以翻译为"组件"更为恰当。与 beans 端点返回的数据相同,组件面板中可以查看某个 Bean 中依赖的其他 Bean 以及这个 Bean 的来源。
  5. 配置属性
    配置属性"就是监控端点中的configprops,它对应的是/actuator/configprops端点返回的数据。
  6. 日志配置
    下面的一个重点是日志配置的内容,loggers 这个端点具备多个功能,发送 GET 请求可以获取指定的日志级别,而发送 PUT 请求可以修改日志级别,在 Admin Server 的这个面板中我们就可以利用图形化界面代替 API 工具发送请求。
    当打开日志配置页面时,默认没有配置的情况下所有日志输出级别都是 INFO,通过单击每个日志项右侧的按钮可以动态修改某个包下(甚至全局)的日志打印级别。
    这个功能在项目开发中非常有用,正常情况下我们在开发环境中可能使用 INFO 级别,在生产环境中可能使用 WARN 或者 ERROR 级别,而当出现问题需要调试时希望可以切换到 DEBUG 级别,但是传统开发中每次切换都要重新启动工程,费时费力,因此 Admin Server 直接提供了可视化切换面板,可以直接在 Admin Server 中切换日志输出级别,配合日志收集分析,排查问题。

    其余的各个板块,感兴趣的读者可以逐个单击查看,比如前面讲解的 mappings 映射信息,以及 JVM 堆、栈的查看,这些功能大大提升了我们监控的体验感和效率。
相关推荐
雨田言炎11 小时前
STM32专题之内部FLASH详解
笔记·stm32·单片机
evans在进步11 小时前
Spring Boot 工程化核心详解:Parent、Starter、热部署、事务与多数据源
spring boot·后端·python
卓怡学长11 小时前
w181springboot机场乘客服务系统
java·数据库·spring boot·spring·intellij-idea
xiaoxiangsiyan11 小时前
全网IPv6规模化改造实战指南
运维·网络·笔记·云原生·自动化
萧瑟余晖12 小时前
Java深入解析篇三十九之集成测试
java·开发语言·集成测试
吴声子夜歌12 小时前
Java面试——数据结构(一)
java·数据结构·面试
罗超驿12 小时前
SpringBoot 快速入门
java·spring boot·后端
Wang's Blog12 小时前
PostgreSQL笔记59:行列级权限机制与数据脱敏实践
数据库·笔记·postgresql
疯狂打码的少年13 小时前
【数据结构】选择类排序:简单选择与堆排序
java·数据结构·笔记·算法
那年窗外下的雪.13 小时前
Linux 学习笔记
linux·笔记·学习