Spring Boot Admin应用
1. 简介
Spring Boot Admin(SBA)是一个开源的社区项目,用于管理和监控Spring Boot应用程序。它主要由两个部分构成:服务端(server)和客户端(client)。以下是对Spring Boot Admin的主要功能和特点的解释:
-
监控和管理界面:
-
Spring Boot Admin提供了一个基于Web的用户界面,用于展示和管理Spring Boot应用程序的运行状态。
-
-
集成Spring Boot Actuator:
-
它利用Spring Boot Actuator提供的端点信息,以图形化的方式展示应用的健康状态、指标、配置等。
-
-
功能特性:
-
显示健康状态及详细信息,如JVM和内存指标、数据源指标、缓存指标。
-
跟踪并下载日志文件。
-
查看JVM系统和环境属性。
-
查看Spring启动配置属性。
-
方便的日志级别管理。
-
查看线程转储。
-
视图HTTP traces。
-
查看HTTP端点。
-
查看计划任务。
-
查看和删除活动会话(使用spring-session)。
-
状态更改通知(通过电子邮件、Slack、Hipchat等)。
-
状态变化的事件日志(非持久性)。
-
-
服务端和客户端:
-
服务端提供用户界面,展示和交互Spring Boot Actuators。
-
客户端用于在服务端注册,并允许访问Actuator端点。
-
-
快速开始:
-
要使用Spring Boot Admin,首先需要设置一个Spring Boot应用。服务端可以作为servlet或webflux应用程序运行,需要添加相应的Spring Boot Starter。
-
-
注册客户端应用:
-
每个想要注册的应用都需要包含Spring Boot Admin Client。为了保护端点,还需要添加
spring-boot-starter-security
。
-
-
版本兼容性:
-
Spring Boot Admin 2.0版本已经全面支持Spring Boot 2.x版本,能够很好地与Spring Boot 2.x集成的微服务架构协同工作。
-
-
UI改进:
-
新的UI界面更加简洁美观,提供了更多的信息展示和交互功能。
-
-
健康信息增强:
-
支持更详细的健康检查信息,包括磁盘空间、数据库连接、缓存统计等。
-
-
事件通知:
-
Spring Boot Admin 2.0支持通过邮件、Slack等方式发送事件通知,帮助开发者及时获取应用状态变化信息。
-
2. 实例
2.1 服务端(server)
添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<version>2.7.12</version>
</dependency>
<!-- spring-boot-admin-starter-client -->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>2.7.12</version>
</dependency>
启动类需要添加@EnableAdminServer
注解
@SpringBootApplication
@EnableAdminServer
public class AdminApplication {
public static void main(String[] args) {
SpringApplication.run(AdminApplication.class, args);
}
}
application.yml
server:
port: 9001 # UI端口,注册端口
接下来启动服务器(需要先启动)
2.2 客户端(client)
2.2.1 Client 1
2.2.1.1 添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
<version>2.7.12</version>
</dependency>
<!-- spring-boot-admin-starter-client -->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>2.7.12</version>
</dependency>
-
Spring Boot Actuator的启动器,它提供了生产环境下监控和管理Spring Boot应用的功能。Actuator允许你监控应用的健康状态、度量信息、环境配置、HTTP追踪、线程转储等。
-
Spring Boot Admin的客户端启动器,用于将Spring Boot应用注册为Spring Boot Admin服务器的客户端。当你的应用包含了这个依赖后,它会自动连接到配置的Spring Boot Admin服务器,并将自己注册为一个可管理的客户端。这样,Spring Boot Admin服务器就能够收集来自这个客户端应用的监控数据,包括Actuator暴露的所有端点信息。客户端应用可以通过这些数据被监控和管理,例如查看健康状态、查看日志、管理配置等。
2.2.1.2 application.yml
server:
port: 1111
# actuator 开启全部端点
management:
endpoints:
enabled-by-default: true
web:
exposure:
include: '*'
endpoint:
health:
enabled: true
# 注册到 spring-boot-admin-server
spring:
boot:
admin:
client:
url: http://localhost:9001
-
自定义该程序的端口
-
开启actuator端点
-
客户端注册到server
2.2.1.3 启动客户端
2.2.2 Client 2
2.2.2.1 添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- spring-boot-admin-starter-client -->
<!-- https://mvnrepository.com/artifact/de.codecentric/spring-boot-admin-starter-client -->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>2.4.2</version>
</dependency>
可以看到client依赖的版本与上一个不同,因为所使用的Spring start依赖是不同的,用上一个应用的依赖版本,这个客户端注册不到服务中。
2.2.2.2 application.yml
# actuator 开启全部端点
management:
endpoints:
enabled-by-default: true
web:
exposure:
include: '*'
endpoint:
health:
enabled: true
spring
boot:
admin:
client:
url: http://localhost:9001
2.2.2.3 启动客户端
2.3 测试
2.3.1 控制台
d.c.b.a.server.services.StatusUpdater : Couldn't retrieve status for Instance(id=a80586157
4b2, version=3, registration=Registration(name=spring-boot-application, managementUrl=http://
192.168.6.14:1111/actuator, healthUrl=http://192.168.6.14:1111/actuator/health, serviceUrl=
http://192.168.6.14:1111/, source=http-api), registered=true, statusInfo=StatusInfo(status=
UP, details={}), statusTimestamp=2024-10-31T01:20:31.793Z, info=Info(values={}),
当客户端启动后,在服务器应用的控制台会打印出上述信息,代表客户端已经注册
2.3.2 Server UI
访问http://localhost:9001(服务端的启动地址)
两个客户端都注册到了服务器
点击应用墙,进入具体客户端实例,查看相关信息
其他的留给同学们一起探索!!!
不积跬步,无以至千里 --- xiaokai