介绍
Spring Boot Admin(SBA)是一个开源的社区项目,用于管理和监控 Spring Boot 应用程序。应用程序可以通过 http 的方式,或 Spring Cloud 服务发现机制注册到 SBA 中,然后就可以实现对 Spring Boot 项目的可视化管理和查看了。
Spring Boot Admin 可以监控 Spring Boot 单机或集群项目,它提供详细的健康 (Health)信息、内存信息、JVM 系统和环境属性、垃圾回收信息、日志设置和查看、定时任务查看、Spring Boot 缓存查看和管理等功能。接下来我们一起来搭建和使用吧。
它最终的展示效果如下:
本次用的开发工具是IDEA2022,SpringBoot版本是2.7.1,项目结构是分布式结构,分别由父项目admin、子模块server、子模块client三个部分组成。
1.父项目
首先我们新建一个maven工程作为父项目,主要的作用是聚合子模块方便打包、版本管理。我们点击新建项目,找到第一个New Project,为项目起名为admin,点击创建,完成。
2.子模块——server
这里子模块server的作用是一个监控的项目,它的本质是一个web工程,同样我们点击新建项目,选择SpringBoot项目,起名为server,点击下一步。
勾选上web模块和ops下的server部分,如下图,最后点击创建,完成。
我这里推荐勾选选择,如果你的项目已经创建好了,也可以通过引入依赖的方式来整合,依赖如下,
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
<version>2.7.1</version>
</dependency>
到此为止我们的监控项目就建好了,接下来需要注解开启监控,在server的启动类上加上@EnableAdminServer注解,这样就大功告成了!
最后启动spring项目在浏览器输入http://localhost:8080/applications就进入监控页面了
此时我们可以看到被监控的应用数为0,这是因为我们还没有新建被监控的子模块,接下来我们新建一个子模块。
3.子模块——client
上述步骤完成之后我们需要建立一个子模块被监控,本质也是一个web项目。同server一样我们新建一个SpringBoot项目,点击下一步。
这里需要勾选的也是web模块,不同的是这次ops变成了client,如下图,点击创建,完成。
这里我同样推荐方式,如果你的项目已经建立,则可以引入依赖,依赖如下
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>2.7.1</version>
</dependency>
这样我们就建好了一个被监控的web项目,因为他是一个web项目,所以我们需要将他的端口号改成与server不同的以免冲突,这里我改成了8081,
配置文件中还需要加上一个配置spring.boot.admin.client.url,这个配置的意思是被监控的信息要发到哪个服务器,所以这里我们写上server的url如下图。
这些完成之后我们就可以启动client了,点击启动按钮,等待几秒钟,我们刷新刚才打开的页面,可以发现被监控的实例数变成了1,这样就被监控了!
点击这个实例,我们跳到详情页,可以看到它是处于启动状态。
这是默认指标,我们需要更多的配置来开放更多的指标出来。
开放监控指标
打开client的配置文件,在其中加上下面两个配置,如图所示。然后重启项目。
#开放指定信息给服务器看
management.endpoint.health.show-details=always
management.endpoints.web.exposure.include= *
刷新页面,你会发现新增了很多新指标!
事件日志中包含 Spring Boot 各种状态的展示(UP 为正常、OFFLINE 为异常)和发生的时间,如下图所示:
将 Spring Boot 的所有监控项都开启之后,通过 SBA 就可以查看以下内容了:
- 启动时间、累计运行时间;
- 进程和线程数量和占用的 CPU 资源;
- 垃圾回收详情信息,回收次数和花费时间;
- JVM 线程转储、内存转储详情和对应的文件下载;
- 可以查看和配置 Spring Boot 项目中的日志级别;
- 查看 Spring Boot 项目性能监控;
- 查看 Spring Boot 运行环境信息;
- 查看 Spring Boot 所有类信息;
- 查看 Spring Boot 中的定时任务;
- 查看和管理 Spring Boot 项目中的所有缓存。
简单介绍一下两个配置的作用:
第一个配置 management.endpoint.health.show-details=always 对应右侧的健康明细,包括磁盘使用情况,线程进程情况。
第二个配置 management.endpoints.web.exposure.include= * 指的是左侧除了健康状况以外的其他监控项,例如日志配置,缓存,类等。这里的 " * " 号代表开放所有
简单介绍几个常用的监控项:
1)性能
性能可以看出各个模块的启动时间,也可以添加别的指标。
2)环境
这里的环境包括运行系统,运行环境,jre版本等信息。
3)日志配置
日志配置可以更改对应的实例中的日志级别。
4)映射
映射可以看到项目中所有的接口信息
5)计划任务
计划任务可以查看项目中的定时任务
6)JVM
可以查看JVM 线程和内存使用情况
7)查看项目实时日志
想要查看监控项目中的日志信息,有一个前提条件,前提条件是你被监控的 Spring Boot 项目,必须配置了日志的保存路径或者日志保存文件名,只有配置这两项中的任意一项,你的 Spring Boot 项目才会将日志保存到磁盘上,这样才能通过 SBA 查看到,我配置的是日志路径,在 Spring Boot 的 application.properties 配置文件中添加以下配置:
# 设置日志保存路径
logging.file.path=D:\\work\\log
设置完成之后,重启你的 Spring Boot 项目,然后刷新 SBA 页面,最终展示效果如下:
此时我们就可以查看实时的日志信息了,当然你也可以随时下载日志,如果需要的话。
总结
Spring Boot Admin(SBA)是一个社区开源项目,用于管理和监视 Spring Boot 应用程序,它提供详细的健康 (Health)信息、内存信息、JVM 系统和环境属性、垃圾回收信息、日志设置和查看、定时任务查看、Spring Boot 缓存查看和管理等功能。
我们需要创建一个 SBA 服务器端用来监控一个或多个 Spring Boot 项目,被监控的 Spring Boot 项目要添加 SBA Client 框架的支持,且添加 actuator 框架和相应的配置,就可以实现对 Spring Boot 项目的完美监控了。