Spring Boot Admin是一个管理和监控Spring Boot应用程序的开源项目,在对单一应用服务监控的同时也提供了集群监控方案,支持通过eureka、consul、zookeeper等注册中心的方式实现多服务监控与管理。Spring Boot Admin UI部分使用Vue JS将数据展示在前端。
Spring Boot Admin分为服务端(spring-boot-admin-server)和客户端(spring-boot-admin-client)两个组件:
Spring Boot Admin服务器端负责收集各个客户的数据。各台客户端配置服务器地址,启动后注册到服务器。服务器不停地请求客户端的信息(通过Actuator接口)。具体架构如下图所示。
上图为Spring Boot Admin的整体架构,在每个Spring Boot应用程序上增加Spring Boot Admin Client组件。这样每个Spring Boot应用即Admin客户端,Admin服务端通过请求Admin客户端的接口收集所有的Spring Boot应用信息并进行数据呈现,从而实现Spring Boot应用监控。
换句话说,监控平台就像老师,各SpringBoot就像学生,老师(监控平台)可以收集学生(客户端)的成绩(信息),来判断学生的状态,彼此关系是一对多的关系。
监控平台有多中功能,主要包括显示应用程序的监控状态、应用程序上下线监控、查看 JVM,线程信息、可视化的查看日志以及下载日志文件、动态切换日志级别、Http 请求信息跟踪等等
创建新的Spring Boot项目,在新建的项目中添加Spring Boot Admin服务器端的依赖JAR包:spring-boot-admin-starter-server。
项目创建就不具体介绍了,不熟悉的可以参考SpringBoot项目搭建
版本说明:Spring Boot 2.x=Spring Boot Admin 2.x (比如Spring Boot 2.3.x 可以用Spring Boot Admin 2.3.x)
Spring版本:
org.springframework.boot
spring-boot-starter-parent
2.3.6.RELEASE
服务器端依赖:
de.codecentric
spring-boot-admin-starter-server
2.3.1
org.springframework.boot
spring-boot-starter-web
我上面给的是项目搭建完毕后,再在pom文件里添加依赖,如果是创建项目时选择依赖,要仔细选择,平台依赖和客户端依赖类似,要注意区分,具体如下
server.port=8000
spring.application.name=admin-test
management.endpoint.health.show-details=always
URL是IP+端口,端口用自己定义的。下面是在没有客户端的情况下的初始界面
从Admin服务端的启动界面可以看到,Applications页面会展示应用数量、实例数量和状态3个信息。
创建新的Spring Boot项目,在新建的项目中添加Spring Boot Admin客户端的依赖JAR包:spring-boot-admin-starter-server。
Spring版本:
org.springframework.boot
spring-boot-starter-parent
2.3.6.RELEASE
客户端依赖:
de.codecentric
spring-boot-admin-starter-client
2.3.1
org.springframework.boot
spring-boot-starter-web
spring-boot-admin-starter-client会自动添加Actuator相关依赖,所以这里不需要重复添加Actuator的相关依赖。
server.port=9999
spring.application.name=clientTest1
spring.boot.admin.client.url=http://localhost:8000
配置说明:
启动客户端并刷新监控平台页面...
启动client了,等待几秒钟,刷新刚才打开的页面
点击【应用墙】可以看到如下图所示界面,如果有多个客户端,界面会出现多个6边型
客户端启动之后,Admin服务器界面的Application数量会增加。单击Application下的数值可以查看完整的应用信息。页面会展示被监控的应用列表,单击应用名称会进入此应用的详细监控信息页面。
这个页面会实时显示应用的运行监控信息,包括之前介绍的Actuator所有的端点数据信息。
Spring Boot Admin以图形化的形式展示了应用的各项信息,这些信息大多来自于Spring Boot Actuator提供的接口。利用图形化的形式很容易看到应用的各项参数变化,甚至有些页面还可以进行一些配置操作,比如改变打印日志的级别等。
可以看到各个时间点,各个线程的工作状态
以客户端2为示例,在客户端项目的resources目录下创建logback.xml文件,添加日志信息
${LOG_PATH}/client-test2.%d{yyyy-MM-dd}.%i.log
30
200MB
%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} -%msg%n
所需pom依赖
org.slf4j
slf4j-api
1.7.21
ch.qos.logback
logback-core
1.1.7
ch.qos.logback
logback-classic
1.1.7
刷新Maven,重启项目后,界面如下所示
勾选【已配置】选项,可以看到该项目已经配置的日志配置
配置文件添加日志路径
##与logback中路径保持一致
management.endpoint.logfile.external-file=/data/jar/j-client-test2/log/client-test2.2023-09-05.0.log
##logback文件中,日志文件命名是动态的,但我这里是写死的仅用来测试,后续需要修改
刷新监控平台界面,可以看到日志信息