目录
- 一、简介
- 二、搭建 springboot-admin 管理服务
- 1.Maven 依赖
- 2.application.yml
- 3.添加 @EnableAdminServer
- 4.启动服务,查看页面
- 三、搭建 springboot-admin-client 客户端服务
- 1.Maven 依赖
- 2.application.yml
- 3.启动服务,查看页面
- 四、搭配 Eureka 使用
- 1.搭建 springboot-eureka 服务
- 1.1)Maven 依赖:
- 1.2)application.yml:
- 1.3)添加 @EnableEurekaServer 注解
- 1.4)启动服务
- 2.调整 `springboot-admin` 管理服务
- 1.1)Maven依赖:
- 1.2)application.yml
- 1.3)启动服务
- 3.调整 `springboot-admin-client` 客户端服务
- 1.1)Maven依赖:
- 1.2)application.yml
- 1.3)启动服务
上一章 SpringBoot实战(十二)我们集成了 Spring Actuator
,我们拿到了应用服务的健康状态指标以及其他参数。这一章,我们就来看一下基于 Spring Actuator
数据进行图形化界面展示的 Spring Boot Admin
框架。
一、简介
Spring Boot Admin: Spring Boot Admin 是一个开源项目,提供了一个基于 web 的界面来管理和监控 Spring Boot 的应用程序。它可以实时监控您的 Spring Boot 应用程序,包括健康状况、指标和其他有用信息。
GitHub: https://github.com/codecentric/spring-boot-admin
官方文档: https://codecentric.github.io/spring-boot-admin/2.5.1/#getting-started
通过 Spring Boot Admin,我们可以轻松地从一个仪表板管理多个 Spring Boot 应用程序。我们可以查看每个应用程序的详细信息,包括内存使用情况、CPU 使用情况、线程等等。您还可以查看每个应用程序的配置属性,并在运行时进行编辑。
Spring Boot Admin 还提供了一个集中查看 Spring Boot 应用程序日志的地方。您可以按日期、日志级别和文本搜索过滤日志。这可以帮助我们快速排查应用程序中的问题。
此外,Spring Boot Admin 还具有发送通知的内置支持,当发生某些事件时,例如应用程序关闭或堆使用超过某个阈值时,您可以接收到通知。
总体而言,Spring Boot Admin 是一个有用的工具,用于管理和监控您的 Spring Boot 应用程序。它可以帮助您快速识别和排查问题,同时为您的应用程序的健康和性能提供有价值的参考。
这里,我们会一起创建一个 Spring Boot Admin 的管理服务
和客户端服务
。
二、搭建 springboot-admin 管理服务
1.Maven 依赖
<properties>
<java.version>1.8</java.version>
<spring.boot.version>2.4.5</spring.boot.version>
<spring.cloud.version>2020.0.3</spring.cloud.version>
<admin.starter.server.version>2.3.1</admin.starter.server.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!-- spring-boot-admin -->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
<version>${admin.starter.server.version}</version>
</dependency>
<!-- Eureka -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring.boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2.application.yml
server:
port: 8000
spring:
application:
name: springboot-admin
management:
endpoint:
health:
show-details: always
3.添加 @EnableAdminServer
在启动类添加 @EnableAdminServer
注解:
import de.codecentric.boot.admin.server.config.EnableAdminServer;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@EnableAdminServer
@SpringBootApplication
public class SpringbootDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootDemoApplication.class, args);
}
}
4.启动服务,查看页面
启动 springboot-admin
服务,访问地址:http://localhost:8000
三、搭建 springboot-admin-client 客户端服务
1.Maven 依赖
<properties>
<java.version>1.8</java.version>
<spring.boot.version>2.4.5</spring.boot.version>
<spring.cloud.version>2020.0.3</spring.cloud.version>
<admin.starter.client.version>2.3.1</admin.starter.client.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!-- spring-boot-actuator -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- spring-boot-admin-client -->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>${admin.starter.client.version}</version>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring.boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2.application.yml
server:
port: 8001
spring:
application:
name: springboot-admin-client
boot:
admin:
client:
api-path: /instances
url: http://127.0.0.1:8100
instance:
prefer-ip: true # 使用ip注册进来
management:
endpoint:
health:
show-details: always
endpoints:
enabled-by-default: true
web:
base-path: /actuator
exposure:
include: "*"
3.启动服务,查看页面
启动 springboot-admin-client
服务,再次访问地址:http://localhost:8000
点击 应用墙
,我们可以看到目前是只有一个客户端服务。
点击这个服务,我们可以看到当前服务的元数据、进程和线程的状态等信息。
以上就是 Spring Boot Admin
框架的原始集成方式。
四、搭配 Eureka 使用
其实 Spring Boot Admin
可以搭配 Eureka
注册中心,实现自动扫描注册到注册中心上的所有服务,只要服务中集成了 Spring Actuator
。
1.搭建 springboot-eureka 服务
1.1)Maven 依赖:
<properties>
<java.version>1.8</java.version>
<spring.boot.version>2.4.5</spring.boot.version>
<spring.cloud.version>2020.0.3</spring.cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- eureka -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring.boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
1.2)application.yml:
server:
port: 1001
spring:
application:
name: springboot-eureka
security:
user:
name: demo
password: Demo2023
eureka:
instance:
hostname: localhost
client:
# eureka.client.registerWithEureka :表示是否将自己注册到Eureka Server,默认为true。
# 由于当前这个应用就是Eureka Server,故而设为false
register-with-eureka: false
# eureka.client.fetchRegistry :表示是否从Eureka Server获取注册信息,默认为true。
# 因为这是一个单点的Eureka Server,不需要同步其他的Eureka Server节点的数据,故而设为false。
fetch-registry: false
server:
# 配置属性,但由于 Eureka 自我保护模式以及心跳周期长的原因,经常会遇到 Eureka Server 不剔除已关停的节点的问题
enable-self-preservation: false
# 清理间隔(单位毫秒,默认是60*1000),开发环境设置如下可快速移除不可用的服务
eviction-interval-timer-in-ms: 5000
1.3)添加 @EnableEurekaServer 注解
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@EnableEurekaServer
@SpringBootApplication
public class SpringbootDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootDemoApplication.class, args);
}
}
1.4)启动服务
启动服务,访问地址:http://localhost:1001
2.调整 springboot-admin
管理服务
1.1)Maven依赖:
<properties>
<java.version>1.8</java.version>
<spring.boot.version>2.4.5</spring.boot.version>
<spring.cloud.version>2020.0.3</spring.cloud.version>
<admin.starter.server.version>2.3.1</admin.starter.server.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- spring-boot-admin -->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-server</artifactId>
<version>${admin.starter.server.version}</version>
</dependency>
<!-- Eureka -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring.boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
1.2)application.yml
server:
port: 8000
spring:
application:
name: springboot-admin
management:
endpoint:
health:
show-details: always
#eureka client
eureka:
client:
service-url:
defaultZone: http://demo:Demo2023@localhost:1001/eureka/
instance:
hostname: localhost
prefer-ip-address: true # 是否使用 ip 地址注册
instance-id: ${spring.cloud.client.ip-address}:${server.port} # ip:port
lease-renewal-interval-in-seconds: 5 # 实例续期心跳间隔(默认30s),设置之后启动服务不需要等很久就可以访问到服务的内容
lease-expiration-duration-in-seconds: 15 # 实例续期持续多久后失效(默认90s)
1.3)启动服务
访问 Eureka 地址:http://localhost:1001
访问管理页面地址:http://localhost:8000/wallboard
3.调整 springboot-admin-client
客户端服务
1.1)Maven依赖:
<properties>
<java.version>1.8</java.version>
<spring.boot.version>2.3.6.RELEASE</spring.boot.version>
<spring.cloud.version>Hoxton.SR8</spring.cloud.version>
<admin.starter.client.version>2.3.1</admin.starter.client.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Lombok -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!-- spring-boot-actuator -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<!-- spring-boot-admin-client -->
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>${admin.starter.client.version}</version>
</dependency>
<!-- Eureka -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring.boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring.cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
1.2)application.yml
server:
port: 8001
spring:
application:
name: springboot-admin-client
# boot:
# admin:
# client:
# api-path: /instances
# url: http://127.0.0.1:8000
# instance:
# prefer-ip: true # 使用ip注册进来
management:
endpoint:
health:
show-details: always
endpoints:
enabled-by-default: true
web:
base-path: /actuator
exposure:
include: "*"
#eureka client
eureka:
client:
service-url:
defaultZone: http://demo:Demo2023@localhost:1001/eureka/
instance:
hostname: localhost
prefer-ip-address: true # 是否使用 ip 地址注册
instance-id: ${spring.cloud.client.ip-address}:${server.port} # ip:port
lease-renewal-interval-in-seconds: 5 # 实例续期心跳间隔(默认30s),设置之后启动服务不需要等很久就可以访问到服务的内容
lease-expiration-duration-in-seconds: 15 # 实例续期持续多久后失效(默认90s)
1.3)启动服务
访问 Eureka 地址:http://localhost:1001
访问管理页面地址:http://localhost:8000/wallboard
整理完毕,完结撒花~ 🌻
参考地址:
1.Spring Boot Admin 介绍及使用,https://blog.csdn.net/zouliping123456/article/details/121977792