0. 官方文档及示例
官方文档
示例代码:Spring-Boot-Admin-Demo
1. 概述
-
Spring Boot Admin(SBA)是一个开源的社区项目,用于管理和监控 Spring Boot 应用程序。应用程序可以通过 http 的方式,或 Spring Cloud 服务发现机制注册到 SBA 中,然后就可以实现对 Spring Boot 项目的可视化管理和查看了。
-
Spring Boot Admin 可以监控 Spring Boot 单机或集群项目,它提供详细的
健康 (Health)信息
、内存信息
、JVM 系统和环境属性
、垃圾回收信息
、日志设置和查看
、定时任务查看
、Spring Boot 缓存查看和管理
等功能。 -
Spring Boot Admin 是一个监控工具,旨在以良好且易于访问的方式可视化 Spring Boot Actuators 提供的信息。它由两个主要部分组成:
- 提供用户界面来显示 Spring Boot Actuators 并与之交互的服务器。
- 用于在服务器上注册并允许访问执行器端点的客户端。
1.1 版本对应关系
Spring Boot - Spring Boot Admin 版本对应关系
Spring Boot Version | Spring Boot Admin |
---|---|
2.6 | 2.6.Y |
2.7 | 2.7.Y |
3.0 | 3.0.Y |
注意:springboot3.x需要jdk17及以上
2. 搭建服务端
-
参照版本对应关系创建一个springboot项目,作为服务端
-
添加SBA Server端依赖
-
开启SBA服务
package site.zhourui.sbaserver;import de.codecentric.boot.admin.server.config.EnableAdminServer; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;@EnableAdminServer // 添加此行代码 @SpringBootApplication public class SbaserverApplication {public static void main(String[] args) {SpringApplication.run(SbaserverApplication.class, args);}}
-
配置SBA端口号
- 我习惯使用yaml配置文件,springboot默认生成的是properties文件
- 如果是application.properties 需要将如下配置修改为properties格式,我配置的端口号是 9001
- 配置端口号的主要目的是为了不和其他 Spring Boot 项目冲突,如果 SBA 是单独部署此步骤可以忽略。
server:port: 9001
-
启动SBA Server
启动项目之后,就可以看到 SBA 的主页了,如下图所示:
3. 搭建客户端
-
参照版本对应关系创建一个springboot项目,作为客户端
-
勾选SBA Server端依赖 ,web依赖视情况而定
-
配置SBA端口号,服务名及服务端监控地址
server:port: 8081 ## 当前项目端口号 spring:boot:admin:client:url: http://localhost:9001 # Spring Boot Admin 监控服务器端地址 application:name: sbaclient01 #服务名称
-
启动sbaclient01服务
-
到服务端查看sbaclient01服务是否注册成功
4. SpringBootAdmin监控总览
-
点击应用进入详情页面,如下图所示:
-
查看全部事件
5. 配置查看更多监控项
通过上面的内容我们可以看出,监控的 Spring Boot 选项还是比较少的,怎么才能查看更多的监控项呢?要解决这个问题,我们需要在被监控的 Spring Boot 项目中添加 spring-boot-starter-actuator 框架的支持,并开启查看所有监控项的配置才行,最终展示效果如下:
-
添加actuator框架支持
在被监控的 Spring Boot 项目中添加 actuator 框架支持,也就是在 pom.xml 中添加以下配置:
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
-
配置开放所有监控项
本来是*号的,但是yaml需要使用
''
才不会报如下错误management:endpoints:web:exposure:include: '*' #开启监控所有项
生产环境按照需求开启监控项不要全部开启
-
重启服务
6. 监控项目预览
将 Spring Boot 的所有监控项都开启之后,通过 SBA 就可以查看以下内容了:
- 启动时间、累计运行时间;
- 进程和线程数量和占用的 CPU 资源;
- 垃圾回收详情信息,回收次数和花费时间;
- JVM 线程转储、内存转储详情和对应的文件下载;
- 可以查看和配置 Spring Boot 项目中的日志级别;
- 查看 Spring Boot 项目性能监控;
- 查看 Spring Boot 运行环境信息;
- 查看 Spring Boot 所有类信息;
- 查看 Spring Boot 中的定时任务;
- 查看和管理 Spring Boot 项目中的所有缓存。
6.1 查看运行环境
这里的数据被spring actuator 进行了脱敏操作了全变成了星号了
6.2 查看定时任务
这里我没有写定时任务,所以就没有
6.3 项目日志级别配置
6.4 JVM线程和内存查看
6.5 接口
6.6 缓存
6.7 事实日志
- 3.x版本可能因为安全问题移除了事实日志了,并且运行环境spring actuator也进行脱敏操作了
- 所以最好推荐使用2.x版本
推荐2.5.3
,相同的步骤只不过springboot版本与SpringBootAdmin版本换成2.x版本即可- 但需要注意生产环境安全问题